From 0593120a4e77fa60ea3ea3cb5684f2776897f41e Mon Sep 17 00:00:00 2001 From: Idris Hanafi Date: Tue, 28 Mar 2023 10:35:22 -0400 Subject: [PATCH 1/7] wip: init precompiled contract loadtester --- cmd/loadtest/loadtest.go | 66 +++++++++++++---- contracts/precompiledContracts.go | 117 ++++++++++++++++++++++++++++++ 2 files changed, 170 insertions(+), 13 deletions(-) create mode 100644 contracts/precompiledContracts.go diff --git a/cmd/loadtest/loadtest.go b/cmd/loadtest/loadtest.go index a1e0d4cd..a48ded54 100644 --- a/cmd/loadtest/loadtest.go +++ b/cmd/loadtest/loadtest.go @@ -62,16 +62,18 @@ import ( ) const ( - loadTestModeTransaction = "t" - loadTestModeDeploy = "d" - loadTestModeCall = "c" - loadTestModeFunction = "f" - loadTestModeInc = "i" - loadTestModeRandom = "r" - loadTestModeStore = "s" - loadTestModeLong = "l" - loadTestModeERC20 = "2" - loadTestModeERC721 = "7" + loadTestModeTransaction = "t" + loadTestModeDeploy = "d" + loadTestModeCall = "c" + loadTestModeFunction = "f" + loadTestModeInc = "i" + loadTestModeRandom = "r" + loadTestModeStore = "s" + loadTestModeLong = "l" + loadTestModeERC20 = "2" + loadTestModeERC721 = "7" + loadTestModePrecompiledContracts = "p" + loadTestModePrecompiledContract = "a" codeQualitySeed = "code code code code code code code code code code code quality" codeQualityPrivateKey = "42b6e34dc21598a807dc19d7784c71b2a7a01f6480dc6f58258f78e539f1a1fa" @@ -91,6 +93,8 @@ var ( loadTestModeLong, loadTestModeERC20, loadTestModeERC721, + loadTestModePrecompiledContracts, + loadTestModePrecompiledContract, // r should be last to exclude it from random mode selection loadTestModeRandom, } @@ -286,12 +290,14 @@ t - sending transactions d - deploy contract c - call random contract functions f - call specific contract function +p - call random precompiled contracts // TODO: Added +a - call a specific precompiled contract address // TODO: Add this feature s - store mode l - long running mode r - random modes 2 - ERC20 Transfers 7 - ERC721 Mints`) - ltp.Function = LoadtestCmd.PersistentFlags().Uint64P("function", "f", 1, "A specific function to be called if running with `--mode f` ") + ltp.Function = LoadtestCmd.PersistentFlags().Uint64P("function", "f", 1, "A specific function to be called if running with `--mode f` or a specific precompiled contract when running with `--mode a`") ltp.Iterations = LoadtestCmd.PersistentFlags().Uint64P("iterations", "i", 100, "If we're making contract calls, this controls how many times the contract will execute the instruction in a loop. If we are making ERC721 Mints, this indicated the minting batch size") ltp.ByteCount = LoadtestCmd.PersistentFlags().Uint64P("byte-count", "b", 1024, "If we're in store mode, this controls how many bytes we'll try to store in our contract") ltp.Seed = LoadtestCmd.PersistentFlags().Int64("seed", 123456, "A seed for generating random values and addresses") @@ -692,7 +698,7 @@ func mainLoop(ctx context.Context, c *ethclient.Client, rpc *ethrpc.Client) erro return err } startNonce := currentNonce - log.Debug().Uint64("currenNonce", currentNonce).Msg("Starting main loadtest loop") + log.Debug().Uint64("currentNonce", currentNonce).Msg("Starting main loadtest loop") var wg sync.WaitGroup for i = 0; i < routines; i = i + 1 { log.Trace().Int64("routine", i).Msg("Starting Thread") @@ -749,6 +755,8 @@ func mainLoop(ctx context.Context, c *ethclient.Client, rpc *ethrpc.Client) erro startReq, endReq, err = loadtestERC20(ctx, c, myNonceValue, erc20Contract, ltAddr) case loadTestModeERC721: startReq, endReq, err = loadtestERC721(ctx, c, myNonceValue, erc721Contract, ltAddr) + case loadTestModePrecompiledContracts: + startReq, endReq, err = loadtestCallPrecompiledContracts(ctx, c, myNonceValue) default: log.Error().Str("mode", mode).Msg("We've arrived at a load test mode that we don't recognize") } @@ -766,7 +774,7 @@ func mainLoop(ctx context.Context, c *ethclient.Client, rpc *ethrpc.Client) erro } log.Trace().Msg("Finished starting go routines. Waiting..") wg.Wait() - log.Debug().Uint64("currenNonce", currentNonce).Msg("Finished main loadtest loop") + log.Debug().Uint64("currentNonce", currentNonce).Msg("Finished main loadtest loop") log.Debug().Msg("Waiting for transactions to actually be mined") finalBlockNumber, err := waitForFinalBlock(ctx, c, rpc, startBlockNumber, startNonce, currentNonce) if err != nil { @@ -856,6 +864,7 @@ func loadtestTransaction(ctx context.Context, c *ethclient.Client, nonce uint64) t2 = time.Now() return } + func loadtestDeploy(ctx context.Context, c *ethclient.Client, nonce uint64) (t1 time.Time, t2 time.Time, err error) { ltp := inputLoadTestParams @@ -897,6 +906,7 @@ func loadtestFunction(ctx context.Context, c *ethclient.Client, nonce uint64, lt t2 = time.Now() return } + func loadtestCall(ctx context.Context, c *ethclient.Client, nonce uint64, ltContract *contracts.LoadTester) (t1 time.Time, t2 time.Time, err error) { ltp := inputLoadTestParams @@ -918,6 +928,29 @@ func loadtestCall(ctx context.Context, c *ethclient.Client, nonce uint64, ltCont t2 = time.Now() return } + +func loadtestCallPrecompiledContracts(ctx context.Context, c *ethclient.Client, nonce uint64) (t1 time.Time, t2 time.Time, err error) { + ltp := inputLoadTestParams + + chainID := new(big.Int).SetUint64(*ltp.ChainID) + privateKey := ltp.ECDSAPrivateKey + iterations := ltp.Iterations + f := contracts.GetRandomPrecompiledContractAddress() + + tops, err := bind.NewKeyedTransactorWithChainID(privateKey, chainID) + if err != nil { + log.Error().Err(err).Msg("Unable create transaction signer") + return + } + tops.Nonce = new(big.Int).SetUint64(nonce) + tops = configureTransactOpts(tops) + + t1 = time.Now() + err = contracts.CallPrecompiledContracts(ctx, c, f, tops, *iterations, *ltp.FromETHAddress, privateKey) + t2 = time.Now() + return +} + func loadtestInc(ctx context.Context, c *ethclient.Client, nonce uint64, ltContract *contracts.LoadTester) (t1 time.Time, t2 time.Time, err error) { ltp := inputLoadTestParams @@ -937,6 +970,7 @@ func loadtestInc(ctx context.Context, c *ethclient.Client, nonce uint64, ltContr t2 = time.Now() return } + func loadtestStore(ctx context.Context, c *ethclient.Client, nonce uint64, ltContract *contracts.LoadTester) (t1 time.Time, t2 time.Time, err error) { ltp := inputLoadTestParams @@ -958,6 +992,7 @@ func loadtestStore(ctx context.Context, c *ethclient.Client, nonce uint64, ltCon t2 = time.Now() return } + func loadtestLong(ctx context.Context, c *ethclient.Client, nonce uint64, delegatorContract *contracts.Delegator, ltAddress ethcommon.Address) (t1 time.Time, t2 time.Time, err error) { ltp := inputLoadTestParams @@ -1381,6 +1416,7 @@ func waitForFinalBlock(ctx context.Context, c *ethclient.Client, rpc *ethrpc.Cli log.Trace().Uint64("currentNonce", currentNonce).Uint64("startblock", startBlockNumber).Uint64("endblock", lastBlockNumber).Msg("It looks like all transactions have been mined") return lastBlockNumber, nil } + func summarizeTransactions(ctx context.Context, c *ethclient.Client, rpc *ethrpc.Client, startBlockNumber, startNonce, lastBlockNumber, endNonce uint64) error { ltp := inputLoadTestParams var err error @@ -1648,6 +1684,7 @@ func printBlockSummary(c *ethclient.Client, bs map[uint64]blockSummary, startNon log.Error().Str("mode", summaryOutputMode).Msg("Invalid mode for summary output") } } + func getSuccessfulTransactionCount(bs map[uint64]blockSummary) (successful, total int64) { total = 0 successful = 0 @@ -1661,6 +1698,7 @@ func getSuccessfulTransactionCount(bs map[uint64]blockSummary) (successful, tota } return } + func getTotalGasUsed(receipts map[ethcommon.Hash]rpctypes.RawTxReceipt) uint64 { var totalGasUsed uint64 = 0 for _, receipt := range receipts { @@ -1668,6 +1706,7 @@ func getTotalGasUsed(receipts map[ethcommon.Hash]rpctypes.RawTxReceipt) uint64 { } return totalGasUsed } + func getMapValues[K constraints.Ordered, V any](m map[K]V) []V { newSlice := make([]V, 0) for _, val := range m { @@ -1675,6 +1714,7 @@ func getMapValues[K constraints.Ordered, V any](m map[K]V) []V { } return newSlice } + func getMinMedianMax[V constraints.Float | constraints.Integer](values []V) (V, V, V) { if len(values) == 0 { return 0, 0, 0 diff --git a/contracts/precompiledContracts.go b/contracts/precompiledContracts.go new file mode 100644 index 00000000..e431a2f2 --- /dev/null +++ b/contracts/precompiledContracts.go @@ -0,0 +1,117 @@ +package contracts + +import ( + "context" + "crypto/ecdsa" + "fmt" + // "math/rand" + + "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/ethclient" + + "github.com/rs/zerolog/log" +) + +func GenerateECRecoverInput(privateKey *ecdsa.PrivateKey) []byte { + message := []byte("Test ecRecover") + messageHash := crypto.Keccak256Hash(message) + signature, err := crypto.Sign(messageHash.Bytes(), privateKey) + if err != nil { + panic(err) + } + + // Prepare input data for ecRecover precompiled contract + inputData := make([]byte, 128) + copy(inputData[0:32], messageHash.Bytes()) + copy(inputData[32:64], common.LeftPadBytes(signature[64:65], 32)) + copy(inputData[64:96], common.LeftPadBytes(signature[0:32], 32)) + copy(inputData[96:128], common.LeftPadBytes(signature[32:64], 32)) + + return inputData +} + +func GenerateSHA256Input() []byte { + inputData := []byte("Test") + paddedInput := common.RightPadBytes(inputData, 32) // pad input to 32 bytes + + return paddedInput +} + +func CallPrecompiledContracts(ctx context.Context, c *ethclient.Client, address int, tops *bind.TransactOpts, iterations uint64, fromAddress common.Address, privateKey *ecdsa.PrivateKey) error { + h := fmt.Sprintf("0x%x", address) + contractPrecompiledAddress := common.HexToAddress(h) + var inputData []byte + + switch address { + case 1: + inputData = GenerateECRecoverInput(privateKey) + case 2: + inputData = GenerateSHA256Input() + // case 3: + // case 4: + // case 5: + // case 6: + // case 7: + // case 8: + // case 9: + // case 10: + // case 11: + // case 12: + // case 13: + // case 14: + // case 15: + // case 16: + // case 17: + // case 18: + default: + return fmt.Errorf("Unrecognized precompiled address %d", address) + } + + // gasPrice + gasPrice, err := c.SuggestGasPrice(ctx) + if err != nil { + return fmt.Errorf("Failed to estimate gasPrice") + } + fmt.Printf("gasPrice: %d\n", gasPrice) + + fmt.Println("fromAddress: ", fromAddress) + // Prepare the call message + callMsg := ethereum.CallMsg{ + From: fromAddress, + To: &contractPrecompiledAddress, + Gas: 10000000, + GasPrice: gasPrice, + Data: inputData, + } + + /** + // Estimate gas + gas, err := c.EstimateGas(ctx, callMsg) + if err != nil { + return fmt.Errorf("Failed to estimate gas") + } + + // Increase the gas limit + tops.GasLimit = gas * 2 + */ + + // Call the precompiled contract + callResult, err := c.CallContract(ctx, callMsg, nil) + if err != nil { + return fmt.Errorf("Failed to call precompiled contract 0x%x", contractPrecompiledAddress) + } + + // Print the result + log.Trace().Str("method", h).Msg("Executing contract method") + fmt.Printf("callResult: 0x%x\n", callResult) + + return nil +} + +func GetRandomPrecompiledContractAddress() int { + return 2 + // return rand.Intn(17) + 1 +} From 6cba2b8bc507a3dc1d2ad03ea29bdfc21d0d8a2c Mon Sep 17 00:00:00 2001 From: Idris Hanafi Date: Thu, 30 Mar 2023 00:12:53 -0400 Subject: [PATCH 2/7] feat: precompiled address working. added: ecRecover and sha256 --- cmd/loadtest/loadtest.go | 8 +-- contracts/LoadTester.abi | 2 +- contracts/LoadTester.bin | 2 +- contracts/LoadTester.sol | 43 +++++++++++++- contracts/contracts.go | 1 + contracts/loadtester.go | 93 +++++++++++++++++++++++++++++-- contracts/precompiledContracts.go | 90 +++++++++--------------------- 7 files changed, 163 insertions(+), 76 deletions(-) diff --git a/cmd/loadtest/loadtest.go b/cmd/loadtest/loadtest.go index a48ded54..6488e69f 100644 --- a/cmd/loadtest/loadtest.go +++ b/cmd/loadtest/loadtest.go @@ -538,7 +538,7 @@ func mainLoop(ctx context.Context, c *ethclient.Client, rpc *ethrpc.Client) erro // deploy and instantiate the load tester contract var ltAddr ethcommon.Address var ltContract *contracts.LoadTester - if strings.ContainsAny(mode, "rcfisl") || *inputLoadTestParams.ForceContractDeploy { + if strings.ContainsAny(mode, "rcfislps") || *inputLoadTestParams.ForceContractDeploy { if *inputLoadTestParams.LtAddress == "" { ltAddr, _, _, err = contracts.DeployLoadTester(tops, c) if err != nil { @@ -756,7 +756,7 @@ func mainLoop(ctx context.Context, c *ethclient.Client, rpc *ethrpc.Client) erro case loadTestModeERC721: startReq, endReq, err = loadtestERC721(ctx, c, myNonceValue, erc721Contract, ltAddr) case loadTestModePrecompiledContracts: - startReq, endReq, err = loadtestCallPrecompiledContracts(ctx, c, myNonceValue) + startReq, endReq, err = loadtestCallPrecompiledContracts(ctx, c, myNonceValue, ltContract) default: log.Error().Str("mode", mode).Msg("We've arrived at a load test mode that we don't recognize") } @@ -929,7 +929,7 @@ func loadtestCall(ctx context.Context, c *ethclient.Client, nonce uint64, ltCont return } -func loadtestCallPrecompiledContracts(ctx context.Context, c *ethclient.Client, nonce uint64) (t1 time.Time, t2 time.Time, err error) { +func loadtestCallPrecompiledContracts(ctx context.Context, c *ethclient.Client, nonce uint64, ltContract *contracts.LoadTester) (t1 time.Time, t2 time.Time, err error) { ltp := inputLoadTestParams chainID := new(big.Int).SetUint64(*ltp.ChainID) @@ -946,7 +946,7 @@ func loadtestCallPrecompiledContracts(ctx context.Context, c *ethclient.Client, tops = configureTransactOpts(tops) t1 = time.Now() - err = contracts.CallPrecompiledContracts(ctx, c, f, tops, *iterations, *ltp.FromETHAddress, privateKey) + _, err = contracts.CallPrecompiledContracts(f, ltContract, tops, *iterations, privateKey) t2 = time.Now() return } diff --git a/contracts/LoadTester.abi b/contracts/LoadTester.abi index 57e1a355..0faf901b 100644 --- a/contracts/LoadTester.abi +++ b/contracts/LoadTester.abi @@ -1 +1 @@ -[{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"dumpster","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCallCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"trash","type":"bytes"}],"name":"store","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testADD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testADDMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testADDRESS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testAND","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBALANCE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBASEFEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBLOCKHASH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBYTE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLDATACOPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLDATALOAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLDATASIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLVALUE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCHAINID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCODECOPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCODESIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCOINBASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testDIFFICULTY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testDIV","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testEQ","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testEXP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testEXTCODESIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGAS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGASLIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGASPRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testISZERO","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG0","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG4","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMLOAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMSIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMSTORE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMSTORE8","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMUL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMULMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testNOT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testNUMBER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testORIGIN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testRETURNDATACOPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testRETURNDATASIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSAR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSDIV","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSELFBALANCE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSGT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSHA3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSHL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSHR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSIGNEXTEND","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSLOAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSLT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSSTORE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSUB","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testTIMESTAMP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testXOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file +[{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"dumpster","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCallCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"loopBlockHashUntilLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"loopUntilLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"trash","type":"bytes"}],"name":"store","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testADD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testADDMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testADDRESS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testAND","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBALANCE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBASEFEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBLOCKHASH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBYTE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLDATACOPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLDATALOAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLDATASIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLVALUE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCHAINID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCODECOPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCODESIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCOINBASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testDIFFICULTY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testDIV","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testECRecover","outputs":[{"internalType":"address","name":"result","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testEQ","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testEXP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testEXTCODESIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGAS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGASLIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGASPRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testISZERO","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG0","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG4","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMLOAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMSIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMSTORE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMSTORE8","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMUL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMULMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testNOT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testNUMBER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testORIGIN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testRETURNDATACOPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testRETURNDATASIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSAR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSDIV","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSELFBALANCE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSGT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testSHA256","outputs":[{"internalType":"bytes32","name":"result","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSHA3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSHL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSHR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSIGNEXTEND","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSLOAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSLT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSSTORE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSUB","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testTIMESTAMP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testXOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/contracts/LoadTester.bin b/contracts/LoadTester.bin index 89a76eb2..7dedfabd 100644 --- a/contracts/LoadTester.bin +++ b/contracts/LoadTester.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b50612642806100206000396000f3fe608060405234801561001057600080fd5b50600436106103db5760003560e01c80637c191d201161020a578063bf529ca111610125578063d93cd558116100b8578063ea5141e611610087578063ea5141e614610efc578063f279ca8114610f2c578063f4d1fc6114610f5c578063f58fc36a14610f8c578063fde7721c14610fbc576103db565b8063d93cd55814610e3c578063dd9bef6014610e6c578063de97a36314610e9c578063e9f9b3f214610ecc576103db565b8063ce3cf4ef116100f4578063ce3cf4ef14610d7c578063d117320b14610dac578063d51e7b5b14610ddc578063d53ff3fd14610e0c576103db565b8063bf529ca114610cbc578063c360aba614610cec578063c420eb6114610d1c578063c4bd65d514610d4c576103db565b8063a60a10871161019d578063b3d847f21161016c578063b3d847f214610bfc578063b7b8620714610c2c578063b81c148414610c5c578063bdc875fc14610c8c576103db565b8063a60a108714610b3c578063a645c9c214610b6c578063acaebdf614610b9c578063b374012b14610bcc576103db565b8063918a5fcd116101d9578063918a5fcd14610a7c57806391e7b27714610aac57806398456f3e14610adc5780639a2b7c8114610b0c576103db565b80637c191d20146109bc5780637de8c6f8146109ec57806380947f8014610a1c578063880eff3914610a4c576103db565b80632b21ef44116102fa5780634a61af1f1161028d5780636e7f1fe71161025c5780636e7f1fe7146108fc5780636f099c8d1461092c57806371d91d281461095c5780637b6e0b0e1461098c576103db565b80634a61af1f1461083c5780634d2c74b31461086c5780635590c2d91461089c57806360e13cde146108cc576103db565b80633a411f12116102c95780633a411f121461077c5780633a425dfc146107ac57806340fe2662146107dc57806344cf3bc71461080c576103db565b80632b21ef44146106ce5780632d34e798146106fe5780633430ec061461072e578063371303c01461075e576103db565b806318093b46116103725780632007332e116103415780632007332e1461060e578063219cddeb1461063e5780632294fc7f1461066e5780632871ef851461069e576103db565b806318093b461461054e57806319b621d61461057e5780631aba07ea146105ae5780631de2f343146105de576103db565b80631287a68c116103ae5780631287a68c146104a0578063135d52f7146104be5780631581cf19146104ee578063165821501461051e576103db565b8063034aef71146103e0578063050082f814610410578063087b4e84146104405780630ba8a73b14610470575b600080fd5b6103fa60048036038101906103f591906120ad565b610fec565b60405161040791906120e9565b60405180910390f35b61042a600480360381019061042591906120ad565b611027565b60405161043791906120e9565b60405180910390f35b61045a600480360381019061045591906120ad565b611062565b60405161046791906120e9565b60405180910390f35b61048a600480360381019061048591906120ad565b61109c565b60405161049791906120e9565b60405180910390f35b6104a86110d8565b6040516104b591906120e9565b60405180910390f35b6104d860048036038101906104d391906120ad565b6110e1565b6040516104e591906120e9565b60405180910390f35b610508600480360381019061050391906120ad565b61111d565b60405161051591906120e9565b60405180910390f35b610538600480360381019061053391906120ad565b611158565b60405161054591906120e9565b60405180910390f35b610568600480360381019061056391906120ad565b6111b3565b60405161057591906120e9565b60405180910390f35b610598600480360381019061059391906120ad565b6111f1565b6040516105a591906120e9565b60405180910390f35b6105c860048036038101906105c391906120ad565b611280565b6040516105d591906120e9565b60405180910390f35b6105f860048036038101906105f391906120ad565b6112c6565b60405161060591906120e9565b60405180910390f35b610628600480360381019061062391906120ad565b611304565b60405161063591906120e9565b60405180910390f35b610658600480360381019061065391906120ad565b611340565b60405161066591906120e9565b60405180910390f35b610688600480360381019061068391906120ad565b61137b565b60405161069591906120e9565b60405180910390f35b6106b860048036038101906106b391906120ad565b6113ba565b6040516106c591906120e9565b60405180910390f35b6106e860048036038101906106e391906120ad565b6113f5565b6040516106f591906120e9565b60405180910390f35b610718600480360381019061071391906120ad565b611430565b60405161072591906120e9565b60405180910390f35b610748600480360381019061074391906120ad565b61146b565b604051610755919061219d565b60405180910390f35b610766611517565b60405161077391906120e9565b60405180910390f35b610796600480360381019061079191906120ad565b611536565b6040516107a391906120e9565b60405180910390f35b6107c660048036038101906107c191906120ad565b611572565b6040516107d391906120e9565b60405180910390f35b6107f660048036038101906107f191906120ad565b6115ae565b60405161080391906120e9565b60405180910390f35b610826600480360381019061082191906120ad565b6115ed565b60405161083391906120e9565b60405180910390f35b610856600480360381019061085191906120ad565b611628565b60405161086391906120e9565b60405180910390f35b610886600480360381019061088191906120ad565b611666565b60405161089391906120e9565b60405180910390f35b6108b660048036038101906108b191906120ad565b6116a1565b6040516108c391906120e9565b60405180910390f35b6108e660048036038101906108e191906120ad565b6116e6565b6040516108f391906120e9565b60405180910390f35b610916600480360381019061091191906120ad565b611722565b60405161092391906120e9565b60405180910390f35b610946600480360381019061094191906120ad565b611760565b60405161095391906120e9565b60405180910390f35b610976600480360381019061097191906120ad565b61179b565b60405161098391906120e9565b60405180910390f35b6109a660048036038101906109a191906120ad565b6117d9565b6040516109b391906120e9565b60405180910390f35b6109d660048036038101906109d191906120ad565b611815565b6040516109e391906120e9565b60405180910390f35b610a066004803603810190610a0191906120ad565b611850565b604051610a1391906120e9565b60405180910390f35b610a366004803603810190610a3191906120ad565b61188c565b604051610a4391906120e9565b60405180910390f35b610a666004803603810190610a6191906120ad565b6118e9565b604051610a7391906120e9565b60405180910390f35b610a966004803603810190610a9191906120ad565b611928565b604051610aa391906120e9565b60405180910390f35b610ac66004803603810190610ac191906120ad565b611963565b604051610ad391906120e9565b60405180910390f35b610af66004803603810190610af191906120ad565b6119af565b604051610b0391906120e9565b60405180910390f35b610b266004803603810190610b2191906120ad565b6119ef565b604051610b3391906120e9565b60405180910390f35b610b566004803603810190610b5191906120ad565b611a2a565b604051610b6391906120e9565b60405180910390f35b610b866004803603810190610b8191906120ad565b611a65565b604051610b9391906120e9565b60405180910390f35b610bb66004803603810190610bb191906120ad565b611aa1565b604051610bc391906120e9565b60405180910390f35b610be66004803603810190610be19190612224565b611add565b604051610bf391906120e9565b60405180910390f35b610c166004803603810190610c1191906120ad565b611b2b565b604051610c2391906120e9565b60405180910390f35b610c466004803603810190610c4191906120ad565b611b66565b604051610c5391906120e9565b60405180910390f35b610c766004803603810190610c7191906120ad565b611ba1565b604051610c8391906120e9565b60405180910390f35b610ca66004803603810190610ca191906120ad565b611bdc565b604051610cb391906120e9565b60405180910390f35b610cd66004803603810190610cd191906120ad565b611c17565b604051610ce391906120e9565b60405180910390f35b610d066004803603810190610d0191906120ad565b611c5b565b604051610d1391906120e9565b60405180910390f35b610d366004803603810190610d3191906120ad565b611c97565b604051610d4391906120e9565b60405180910390f35b610d666004803603810190610d6191906120ad565b611cd2565b604051610d7391906120e9565b60405180910390f35b610d966004803603810190610d9191906120ad565b611d10565b604051610da391906120e9565b60405180910390f35b610dc66004803603810190610dc191906120ad565b611d4d565b604051610dd391906120e9565b60405180910390f35b610df66004803603810190610df191906120ad565b611d87565b604051610e0391906120e9565b60405180910390f35b610e266004803603810190610e2191906120ad565b611dc3565b604051610e3391906120e9565b60405180910390f35b610e566004803603810190610e5191906120ad565b611dff565b604051610e6391906120e9565b60405180910390f35b610e866004803603810190610e8191906120ad565b611e5a565b604051610e9391906120e9565b60405180910390f35b610eb66004803603810190610eb191906120ad565b611e9c565b604051610ec391906120e9565b60405180910390f35b610ee66004803603810190610ee191906120ad565b611ed8565b604051610ef391906120e9565b60405180910390f35b610f166004803603810190610f1191906120ad565b611f15565b604051610f2391906120e9565b60405180910390f35b610f466004803603810190610f4191906120ad565b611f57565b604051610f5391906120e9565b60405180910390f35b610f766004803603810190610f7191906120ad565b611f93565b604051610f8391906120e9565b60405180910390f35b610fa66004803603810190610fa191906120ad565b611fd1565b604051610fb391906120e9565b60405180910390f35b610fd66004803603810190610fd191906120ad565b612010565b604051610fe391906120e9565b60405180910390f35b6000610ff6611517565b50600065deadbeef003690506000805b8481101561101c57369150600181019050611006565b505080915050919050565b6000611031611517565b50600065deadbeef003290506000805b8481101561105757329150600181019050611041565b505080915050919050565b600061106c611517565b50600065deadbeef0052905060005b83811015611092578160005260018101905061107b565b5080915050919050565b60006110a6611517565b50600065deadbeef0001905060005b838110156110ce576000820191506001810190506110b5565b5080915050919050565b60008054905090565b60006110eb611517565b50600065deadbeef0017905060005b83811015611113576000821791506001810190506110fa565b5080915050919050565b6000611127611517565b50600065deadbeef003490506000805b8481101561114d57349150600181019050611137565b505080915050919050565b6000611162611517565b50600065deadbeef0006905060005b838110156111a9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82069150600181019050611171565b5080915050919050565b60006111bd611517565b50600065deadbeef001390506000805b848110156111e6576001831391506001810190506111cd565b505080915050919050565b60006111fb611517565b50600065deadbeef002090507fffffffff000000000000000000000000000000000000000000000000000000006000526000805b84811015611249576004600020915060018101905061122f565b507f29045a592007d0c246ef02c2223570da9522d0cf0f73282c79a1bc8f0bb2c238811461127657600091505b5080915050919050565b600061128a611517565b50600065deadbeef00a490508060105260005b838110156112bc576004600360028360066010a460018101905061129d565b5080915050919050565b60006112d0611517565b50600065deadbeef001a90506000805b848110156112f9578260001a91506001810190506112e0565b505080915050919050565b600061130e611517565b50600065deadbeef001b905060005b83811015611336578160001b915060018101905061131d565b5080915050919050565b600061134a611517565b50600065deadbeef004290506000805b848110156113705742915060018101905061135a565b505080915050919050565b6000611385611517565b50600065deadbeef0031905060003060005b858110156113ae5781319250600181019050611397565b50505080915050919050565b60006113c4611517565b50600065deadbeef004890506000805b848110156113ea574891506001810190506113d4565b505080915050919050565b60006113ff611517565b50600065deadbeef003d90506000805b84811015611425573d915060018101905061140f565b505080915050919050565b600061143a611517565b50600065deadbeef004390506000805b848110156114605743915060018101905061144a565b505080915050919050565b6001818154811061147b57600080fd5b906000526020600020016000915090508054611496906122a0565b80601f01602080910402602001604051908101604052809291908181526020018280546114c2906122a0565b801561150f5780601f106114e45761010080835404028352916020019161150f565b820191906000526020600020905b8154815290600101906020018083116114f257829003601f168201915b505050505081565b600060016000546115289190612300565b600081905550600054905090565b6000611540611517565b50600065deadbeef0004905060005b838110156115685760018204915060018101905061154f565b5080915050919050565b600061157c611517565b50600065deadbeef0037905060005b838110156115a45760206000803760018101905061158b565b5080915050919050565b60006115b8611517565b50600065deadbeef00a090508060105260005b838110156115e35760066010a06001810190506115cb565b5080915050919050565b60006115f7611517565b50600065deadbeef003390506000805b8481101561161d57339150600181019050611607565b505080915050919050565b6000611632611517565b50600065deadbeef0053905060005b8381101561165c5763deadbeef600052600181019050611641565b5080915050919050565b6000611670611517565b50600065deadbeef003a90506000805b84811015611696573a9150600181019050611680565b505080915050919050565b60006116ab611517565b50600065deadbeef0051905060008160005260005b848110156116d85760005191506001810190506116c0565b508091505080915050919050565b60006116f0611517565b50600065deadbeef001d905060005b83811015611718578160001d91506001810190506116ff565b5080915050919050565b600061172c611517565b50600065deadbeef001090506000805b848110156117555782600110915060018101905061173c565b505080915050919050565b600061176a611517565b50600065deadbeef004490506000805b848110156117905744915060018101905061177a565b505080915050919050565b60006117a5611517565b50600065deadbeef001190506000805b848110156117ce576001831191506001810190506117b5565b505080915050919050565b60006117e3611517565b50600065deadbeef003e905060005b8381101561180b5760206000803e6001810190506117f2565b5080915050919050565b600061181f611517565b50600065deadbeef004590506000805b848110156118455745915060018101905061182f565b505080915050919050565b600061185a611517565b50600065deadbeef0002905060005b8381101561188257600182029150600181019050611869565b5080915050919050565b6000611896611517565b50600065deadbeef0008905060005b838110156118df577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000830891506001810190506118a5565b5080915050919050565b60006118f3611517565b50600065deadbeef005490508060005560005b8381101561191e576000549150600181019050611906565b5080915050919050565b6000611932611517565b50600065deadbeef005a90506000805b84811015611958575a9150600181019050611942565b505080915050919050565b600061196d611517565b50600065deadbeef0019905060005b83811015611993578119915060018101905061197c565b5065deadbeef001981146119a657801990505b80915050919050565b60006119b9611517565b50600065deadbeef00a190508060105260005b838110156119e5578060066010a16001810190506119cc565b5080915050919050565b60006119f9611517565b50600065deadbeef0016905060005b83811015611a20578182169150600181019050611a08565b5080915050919050565b6000611a34611517565b50600065deadbeef004690506000805b84811015611a5a57469150600181019050611a44565b505080915050919050565b6000611a6f611517565b50600065deadbeef0005905060005b83811015611a9757600182059150600181019050611a7e565b5080915050919050565b6000611aab611517565b50600065deadbeef0039905060005b83811015611ad357602060008039600181019050611aba565b5080915050919050565b60006001838390918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611b1c92919061253c565b50600180549050905092915050565b6000611b35611517565b50600065deadbeef005990506000805b84811015611b5b57599150600181019050611b45565b505080915050919050565b6000611b70611517565b50600065deadbeef003890506000805b84811015611b9657389150600181019050611b80565b505080915050919050565b6000611bab611517565b50600065deadbeef004190506000805b84811015611bd157419150600181019050611bbb565b505080915050919050565b6000611be6611517565b50600065deadbeef003090506000805b84811015611c0c57309150600181019050611bf6565b505080915050919050565b6000611c21611517565b50600065deadbeef00a390508060105260005b83811015611c5157600360028260066010a3600181019050611c34565b5080915050919050565b6000611c65611517565b50600065deadbeef000b905060005b83811015611c8d578160200b9150600181019050611c74565b5080915050919050565b6000611ca1611517565b50600065deadbeef004790506000805b84811015611cc757479150600181019050611cb1565b505080915050919050565b6000611cdc611517565b50600065deadbeef001c90506000805b84811015611d05578260001c9250600181019050611cec565b505080915050919050565b6000611d1a611517565b50600065deadbeef003590506000805b84811015611d42576000359150600181019050611d2a565b505080915050919050565b6000611d57611517565b50600065deadbeef0055905060005b83811015611d7d5781600055600181019050611d66565b5080915050919050565b6000611d91611517565b50600065deadbeef0018905060005b83811015611db957600082189150600181019050611da0565b5080915050919050565b6000611dcd611517565b50600065deadbeef0003905060005b83811015611df557600082039150600181019050611ddc565b5080915050919050565b6000611e09611517565b50600065deadbeef0007905060005b83811015611e50577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82079150600181019050611e18565b5080915050919050565b6000611e64611517565b50600065deadbeef00a290508060105260005b83811015611e925760028160066010a2600181019050611e77565b5080915050919050565b6000611ea6611517565b50600065deadbeef000a905060005b83811015611ece576001820a9150600181019050611eb5565b5080915050919050565b6000611ee2611517565b50600065deadbeef001490506000805b84811015611f0a578283149150600181019050611ef2565b505080915050919050565b6000611f1f611517565b50600065deadbeef0040905060006001430360005b85811015611f4b5781409250600181019050611f34565b50505080915050919050565b6000611f61611517565b50600065deadbeef001590506000805b84811015611f885782159150600181019050611f71565b505080915050919050565b6000611f9d611517565b50600065deadbeef001290506000805b84811015611fc657826001129150600181019050611fad565b505080915050919050565b6000611fdb611517565b50600065deadbeef003b905060003060005b8581101561200457813b9250600181019050611fed565b50505080915050919050565b600061201a611517565b50600065deadbeef0009905060005b83811015612063577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600183099150600181019050612029565b5080915050919050565b600080fd5b600080fd5b6000819050919050565b61208a81612077565b811461209557600080fd5b50565b6000813590506120a781612081565b92915050565b6000602082840312156120c3576120c261206d565b5b60006120d184828501612098565b91505092915050565b6120e381612077565b82525050565b60006020820190506120fe60008301846120da565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561213e578082015181840152602081019050612123565b8381111561214d576000848401525b50505050565b6000601f19601f8301169050919050565b600061216f82612104565b612179818561210f565b9350612189818560208601612120565b61219281612153565b840191505092915050565b600060208201905081810360008301526121b78184612164565b905092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126121e4576121e36121bf565b5b8235905067ffffffffffffffff811115612201576122006121c4565b5b60208301915083600182028301111561221d5761221c6121c9565b5b9250929050565b6000806020838503121561223b5761223a61206d565b5b600083013567ffffffffffffffff81111561225957612258612072565b5b612265858286016121ce565b92509250509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806122b857607f821691505b6020821081036122cb576122ca612271565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061230b82612077565b915061231683612077565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561234b5761234a6122d1565b5b828201905092915050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026123f27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826123b5565b6123fc86836123b5565b95508019841693508086168417925050509392505050565b6000819050919050565b600061243961243461242f84612077565b612414565b612077565b9050919050565b6000819050919050565b6124538361241e565b61246761245f82612440565b8484546123c2565b825550505050565b600090565b61247c61246f565b61248781848461244a565b505050565b5b818110156124ab576124a0600082612474565b60018101905061248d565b5050565b601f8211156124f0576124c181612390565b6124ca846123a5565b810160208510156124d9578190505b6124ed6124e5856123a5565b83018261248c565b50505b505050565b600082821c905092915050565b6000612513600019846008026124f5565b1980831691505092915050565b600061252c8383612502565b9150826002028217905092915050565b6125468383612356565b67ffffffffffffffff81111561255f5761255e612361565b5b61256982546122a0565b6125748282856124af565b6000601f8311600181146125a35760008415612591578287013590505b61259b8582612520565b865550612603565b601f1984166125b186612390565b60005b828110156125d9578489013582556001820191506020850194506020810190506125b4565b868310156125f657848901356125f2601f891682612502565b8355505b6001600288020188555050505b5050505050505056fea2646970667358221220c9e1182df71dfdc6eb49d545e0c6929c5dfe19c94d7c1bba484ad70b88f8e09064736f6c634300080f0033 \ No newline at end of file +608060405234801561001057600080fd5b50612ad5806100206000396000f3fe608060405234801561001057600080fd5b50600436106104075760003560e01c80637c191d2011610220578063bdc875fc11610130578063d93cd558116100b8578063ea5141e611610087578063ea5141e614610fc4578063f279ca8114610ff4578063f4d1fc6114611024578063f58fc36a14611054578063fde7721c1461108457610407565b8063d93cd55814610f04578063dd9bef6014610f34578063de97a36314610f64578063e9f9b3f214610f9457610407565b8063c4bd65d5116100ff578063c4bd65d514610e14578063ce3cf4ef14610e44578063d117320b14610e74578063d51e7b5b14610ea4578063d53ff3fd14610ed457610407565b8063bdc875fc14610d54578063bf529ca114610d84578063c360aba614610db4578063c420eb6114610de457610407565b8063a18683cb116101b3578063acaebdf611610182578063acaebdf614610c64578063b374012b14610c94578063b3d847f214610cc4578063b7b8620714610cf4578063b81c148414610d2457610407565b8063a18683cb14610bb6578063a271b72114610be6578063a60a108714610c04578063a645c9c214610c3457610407565b8063918a5fcd116101ef578063918a5fcd14610af657806391e7b27714610b2657806398456f3e14610b565780639a2b7c8114610b8657610407565b80637c191d2014610a365780637de8c6f814610a6657806380947f8014610a96578063880eff3914610ac657610407565b80632d34e7981161031b5780634d2c74b3116102ae578063659bbb4f1161027d578063659bbb4f146109585780636e7f1fe7146109765780636f099c8d146109a657806371d91d28146109d65780637b6e0b0e14610a0657610407565b80634d2c74b3146108985780635590c2d9146108c857806360e13cde146108f857806363138d4f1461092857610407565b80633a425dfc116102ea5780633a425dfc146107d857806340fe26621461080857806344cf3bc7146108385780634a61af1f1461086857610407565b80632d34e7981461072a5780633430ec061461075a578063371303c01461078a5780633a411f12146107a857610407565b806318093b461161039e5780632007332e1161036d5780632007332e1461063a578063219cddeb1461066a5780632294fc7f1461069a5780632871ef85146106ca5780632b21ef44146106fa57610407565b806318093b461461057a57806319b621d6146105aa5780631aba07ea146105da5780631de2f3431461060a57610407565b80631287a68c116103da5780631287a68c146104cc578063135d52f7146104ea5780631581cf191461051a578063165821501461054a57610407565b8063034aef711461040c578063050082f81461043c578063087b4e841461046c5780630ba8a73b1461049c575b600080fd5b610426600480360381019061042191906122b4565b6110b4565b60405161043391906122f0565b60405180910390f35b610456600480360381019061045191906122b4565b6110ef565b60405161046391906122f0565b60405180910390f35b610486600480360381019061048191906122b4565b61112a565b60405161049391906122f0565b60405180910390f35b6104b660048036038101906104b191906122b4565b611164565b6040516104c391906122f0565b60405180910390f35b6104d46111a0565b6040516104e191906122f0565b60405180910390f35b61050460048036038101906104ff91906122b4565b6111a9565b60405161051191906122f0565b60405180910390f35b610534600480360381019061052f91906122b4565b6111e5565b60405161054191906122f0565b60405180910390f35b610564600480360381019061055f91906122b4565b611220565b60405161057191906122f0565b60405180910390f35b610594600480360381019061058f91906122b4565b61127b565b6040516105a191906122f0565b60405180910390f35b6105c460048036038101906105bf91906122b4565b6112b9565b6040516105d191906122f0565b60405180910390f35b6105f460048036038101906105ef91906122b4565b611348565b60405161060191906122f0565b60405180910390f35b610624600480360381019061061f91906122b4565b61138e565b60405161063191906122f0565b60405180910390f35b610654600480360381019061064f91906122b4565b6113cc565b60405161066191906122f0565b60405180910390f35b610684600480360381019061067f91906122b4565b611408565b60405161069191906122f0565b60405180910390f35b6106b460048036038101906106af91906122b4565b611443565b6040516106c191906122f0565b60405180910390f35b6106e460048036038101906106df91906122b4565b611482565b6040516106f191906122f0565b60405180910390f35b610714600480360381019061070f91906122b4565b6114bd565b60405161072191906122f0565b60405180910390f35b610744600480360381019061073f91906122b4565b6114f8565b60405161075191906122f0565b60405180910390f35b610774600480360381019061076f91906122b4565b611533565b604051610781919061239b565b60405180910390f35b6107926115df565b60405161079f91906122f0565b60405180910390f35b6107c260048036038101906107bd91906122b4565b6115fe565b6040516107cf91906122f0565b60405180910390f35b6107f260048036038101906107ed91906122b4565b61163a565b6040516107ff91906122f0565b60405180910390f35b610822600480360381019061081d91906122b4565b611676565b60405161082f91906122f0565b60405180910390f35b610852600480360381019061084d91906122b4565b6116b5565b60405161085f91906122f0565b60405180910390f35b610882600480360381019061087d91906122b4565b6116f0565b60405161088f91906122f0565b60405180910390f35b6108b260048036038101906108ad91906122b4565b61172e565b6040516108bf91906122f0565b60405180910390f35b6108e260048036038101906108dd91906122b4565b611769565b6040516108ef91906122f0565b60405180910390f35b610912600480360381019061090d91906122b4565b6117ae565b60405161091f91906122f0565b60405180910390f35b610942600480360381019061093d91906124f2565b6117ea565b60405161094f9190612554565b60405180910390f35b610960611816565b60405161096d91906122f0565b60405180910390f35b610990600480360381019061098b91906122b4565b611852565b60405161099d91906122f0565b60405180910390f35b6109c060048036038101906109bb91906122b4565b611890565b6040516109cd91906122f0565b60405180910390f35b6109f060048036038101906109eb91906122b4565b6118cb565b6040516109fd91906122f0565b60405180910390f35b610a206004803603810190610a1b91906122b4565b611909565b604051610a2d91906122f0565b60405180910390f35b610a506004803603810190610a4b91906122b4565b611945565b604051610a5d91906122f0565b60405180910390f35b610a806004803603810190610a7b91906122b4565b611980565b604051610a8d91906122f0565b60405180910390f35b610ab06004803603810190610aab91906122b4565b6119bc565b604051610abd91906122f0565b60405180910390f35b610ae06004803603810190610adb91906122b4565b611a19565b604051610aed91906122f0565b60405180910390f35b610b106004803603810190610b0b91906122b4565b611a58565b604051610b1d91906122f0565b60405180910390f35b610b406004803603810190610b3b91906122b4565b611a93565b604051610b4d91906122f0565b60405180910390f35b610b706004803603810190610b6b91906122b4565b611adf565b604051610b7d91906122f0565b60405180910390f35b610ba06004803603810190610b9b91906122b4565b611b1f565b604051610bad91906122f0565b60405180910390f35b610bd06004803603810190610bcb91906124f2565b611b5a565b604051610bdd91906125b0565b60405180910390f35b610bee611bdc565b604051610bfb91906122f0565b60405180910390f35b610c1e6004803603810190610c1991906122b4565b611c27565b604051610c2b91906122f0565b60405180910390f35b610c4e6004803603810190610c4991906122b4565b611c62565b604051610c5b91906122f0565b60405180910390f35b610c7e6004803603810190610c7991906122b4565b611c9e565b604051610c8b91906122f0565b60405180910390f35b610cae6004803603810190610ca9919061262b565b611cda565b604051610cbb91906122f0565b60405180910390f35b610cde6004803603810190610cd991906122b4565b611d28565b604051610ceb91906122f0565b60405180910390f35b610d0e6004803603810190610d0991906122b4565b611d63565b604051610d1b91906122f0565b60405180910390f35b610d3e6004803603810190610d3991906122b4565b611d9e565b604051610d4b91906122f0565b60405180910390f35b610d6e6004803603810190610d6991906122b4565b611dd9565b604051610d7b91906122f0565b60405180910390f35b610d9e6004803603810190610d9991906122b4565b611e14565b604051610dab91906122f0565b60405180910390f35b610dce6004803603810190610dc991906122b4565b611e58565b604051610ddb91906122f0565b60405180910390f35b610dfe6004803603810190610df991906122b4565b611e94565b604051610e0b91906122f0565b60405180910390f35b610e2e6004803603810190610e2991906122b4565b611ecf565b604051610e3b91906122f0565b60405180910390f35b610e5e6004803603810190610e5991906122b4565b611f0d565b604051610e6b91906122f0565b60405180910390f35b610e8e6004803603810190610e8991906122b4565b611f4a565b604051610e9b91906122f0565b60405180910390f35b610ebe6004803603810190610eb991906122b4565b611f84565b604051610ecb91906122f0565b60405180910390f35b610eee6004803603810190610ee991906122b4565b611fc0565b604051610efb91906122f0565b60405180910390f35b610f1e6004803603810190610f1991906122b4565b611ffc565b604051610f2b91906122f0565b60405180910390f35b610f4e6004803603810190610f4991906122b4565b612057565b604051610f5b91906122f0565b60405180910390f35b610f7e6004803603810190610f7991906122b4565b612099565b604051610f8b91906122f0565b60405180910390f35b610fae6004803603810190610fa991906122b4565b6120d5565b604051610fbb91906122f0565b60405180910390f35b610fde6004803603810190610fd991906122b4565b612112565b604051610feb91906122f0565b60405180910390f35b61100e600480360381019061100991906122b4565b612154565b60405161101b91906122f0565b60405180910390f35b61103e600480360381019061103991906122b4565b612190565b60405161104b91906122f0565b60405180910390f35b61106e600480360381019061106991906122b4565b6121ce565b60405161107b91906122f0565b60405180910390f35b61109e600480360381019061109991906122b4565b61220d565b6040516110ab91906122f0565b60405180910390f35b60006110be6115df565b50600065deadbeef003690506000805b848110156110e4573691506001810190506110ce565b505080915050919050565b60006110f96115df565b50600065deadbeef003290506000805b8481101561111f57329150600181019050611109565b505080915050919050565b60006111346115df565b50600065deadbeef0052905060005b8381101561115a5781600052600181019050611143565b5080915050919050565b600061116e6115df565b50600065deadbeef0001905060005b838110156111965760008201915060018101905061117d565b5080915050919050565b60008054905090565b60006111b36115df565b50600065deadbeef0017905060005b838110156111db576000821791506001810190506111c2565b5080915050919050565b60006111ef6115df565b50600065deadbeef003490506000805b84811015611215573491506001810190506111ff565b505080915050919050565b600061122a6115df565b50600065deadbeef0006905060005b83811015611271577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82069150600181019050611239565b5080915050919050565b60006112856115df565b50600065deadbeef001390506000805b848110156112ae57600183139150600181019050611295565b505080915050919050565b60006112c36115df565b50600065deadbeef002090507fffffffff000000000000000000000000000000000000000000000000000000006000526000805b8481101561131157600460002091506001810190506112f7565b507f29045a592007d0c246ef02c2223570da9522d0cf0f73282c79a1bc8f0bb2c238811461133e57600091505b5080915050919050565b60006113526115df565b50600065deadbeef00a490508060105260005b83811015611384576004600360028360066010a4600181019050611365565b5080915050919050565b60006113986115df565b50600065deadbeef001a90506000805b848110156113c1578260001a91506001810190506113a8565b505080915050919050565b60006113d66115df565b50600065deadbeef001b905060005b838110156113fe578160001b91506001810190506113e5565b5080915050919050565b60006114126115df565b50600065deadbeef004290506000805b8481101561143857429150600181019050611422565b505080915050919050565b600061144d6115df565b50600065deadbeef0031905060003060005b85811015611476578131925060018101905061145f565b50505080915050919050565b600061148c6115df565b50600065deadbeef004890506000805b848110156114b25748915060018101905061149c565b505080915050919050565b60006114c76115df565b50600065deadbeef003d90506000805b848110156114ed573d91506001810190506114d7565b505080915050919050565b60006115026115df565b50600065deadbeef004390506000805b8481101561152857439150600181019050611512565b505080915050919050565b6002818154811061154357600080fd5b90600052602060002001600091509050805461155e906126a7565b80601f016020809104026020016040519081016040528092919081815260200182805461158a906126a7565b80156115d75780601f106115ac576101008083540402835291602001916115d7565b820191906000526020600020905b8154815290600101906020018083116115ba57829003601f168201915b505050505081565b600060016000546115f09190612707565b600081905550600054905090565b60006116086115df565b50600065deadbeef0004905060005b8381101561163057600182049150600181019050611617565b5080915050919050565b60006116446115df565b50600065deadbeef0037905060005b8381101561166c57602060008037600181019050611653565b5080915050919050565b60006116806115df565b50600065deadbeef00a090508060105260005b838110156116ab5760066010a0600181019050611693565b5080915050919050565b60006116bf6115df565b50600065deadbeef003390506000805b848110156116e5573391506001810190506116cf565b505080915050919050565b60006116fa6115df565b50600065deadbeef0053905060005b838110156117245763deadbeef600052600181019050611709565b5080915050919050565b60006117386115df565b50600065deadbeef003a90506000805b8481101561175e573a9150600181019050611748565b505080915050919050565b60006117736115df565b50600065deadbeef0051905060008160005260005b848110156117a0576000519150600181019050611788565b508091505080915050919050565b60006117b86115df565b50600065deadbeef001d905060005b838110156117e0578160001d91506001810190506117c7565b5080915050919050565b600080600290506020830183518360208183856000885af18061180c57600080fd5b5050505050919050565b60006118206115df565b505b6103e85a111561184a57600180600082825461183e9190612707565b92505081905550611822565b600154905090565b600061185c6115df565b50600065deadbeef001090506000805b848110156118855782600110915060018101905061186c565b505080915050919050565b600061189a6115df565b50600065deadbeef004490506000805b848110156118c0574491506001810190506118aa565b505080915050919050565b60006118d56115df565b50600065deadbeef001190506000805b848110156118fe576001831191506001810190506118e5565b505080915050919050565b60006119136115df565b50600065deadbeef003e905060005b8381101561193b5760206000803e600181019050611922565b5080915050919050565b600061194f6115df565b50600065deadbeef004590506000805b848110156119755745915060018101905061195f565b505080915050919050565b600061198a6115df565b50600065deadbeef0002905060005b838110156119b257600182029150600181019050611999565b5080915050919050565b60006119c66115df565b50600065deadbeef0008905060005b83811015611a0f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000830891506001810190506119d5565b5080915050919050565b6000611a236115df565b50600065deadbeef005490508060005560005b83811015611a4e576000549150600181019050611a36565b5080915050919050565b6000611a626115df565b50600065deadbeef005a90506000805b84811015611a88575a9150600181019050611a72565b505080915050919050565b6000611a9d6115df565b50600065deadbeef0019905060005b83811015611ac35781199150600181019050611aac565b5065deadbeef00198114611ad657801990505b80915050919050565b6000611ae96115df565b50600065deadbeef00a190508060105260005b83811015611b15578060066010a1600181019050611afc565b5080915050919050565b6000611b296115df565b50600065deadbeef0016905060005b83811015611b50578182169150600181019050611b38565b5080915050919050565b60006080825114611ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9790612798565b60405180910390fd5b600060019050602083016020810151601f1a602082015260206040516080836000865af180611bce57600080fd5b604051519350505050919050565b6000611be66115df565b505b6103e85a1115611c1f576001806000828254611c049190612707565b9250508190555043600154611c1991906127e7565b50611be8565b600154905090565b6000611c316115df565b50600065deadbeef004690506000805b84811015611c5757469150600181019050611c41565b505080915050919050565b6000611c6c6115df565b50600065deadbeef0005905060005b83811015611c9457600182059150600181019050611c7b565b5080915050919050565b6000611ca86115df565b50600065deadbeef0039905060005b83811015611cd057602060008039600181019050611cb7565b5080915050919050565b60006002838390918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611d199291906129cf565b50600280549050905092915050565b6000611d326115df565b50600065deadbeef005990506000805b84811015611d5857599150600181019050611d42565b505080915050919050565b6000611d6d6115df565b50600065deadbeef003890506000805b84811015611d9357389150600181019050611d7d565b505080915050919050565b6000611da86115df565b50600065deadbeef004190506000805b84811015611dce57419150600181019050611db8565b505080915050919050565b6000611de36115df565b50600065deadbeef003090506000805b84811015611e0957309150600181019050611df3565b505080915050919050565b6000611e1e6115df565b50600065deadbeef00a390508060105260005b83811015611e4e57600360028260066010a3600181019050611e31565b5080915050919050565b6000611e626115df565b50600065deadbeef000b905060005b83811015611e8a578160200b9150600181019050611e71565b5080915050919050565b6000611e9e6115df565b50600065deadbeef004790506000805b84811015611ec457479150600181019050611eae565b505080915050919050565b6000611ed96115df565b50600065deadbeef001c90506000805b84811015611f02578260001c9250600181019050611ee9565b505080915050919050565b6000611f176115df565b50600065deadbeef003590506000805b84811015611f3f576000359150600181019050611f27565b505080915050919050565b6000611f546115df565b50600065deadbeef0055905060005b83811015611f7a5781600055600181019050611f63565b5080915050919050565b6000611f8e6115df565b50600065deadbeef0018905060005b83811015611fb657600082189150600181019050611f9d565b5080915050919050565b6000611fca6115df565b50600065deadbeef0003905060005b83811015611ff257600082039150600181019050611fd9565b5080915050919050565b60006120066115df565b50600065deadbeef0007905060005b8381101561204d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82079150600181019050612015565b5080915050919050565b60006120616115df565b50600065deadbeef00a290508060105260005b8381101561208f5760028160066010a2600181019050612074565b5080915050919050565b60006120a36115df565b50600065deadbeef000a905060005b838110156120cb576001820a91506001810190506120b2565b5080915050919050565b60006120df6115df565b50600065deadbeef001490506000805b848110156121075782831491506001810190506120ef565b505080915050919050565b600061211c6115df565b50600065deadbeef0040905060006001430360005b858110156121485781409250600181019050612131565b50505080915050919050565b600061215e6115df565b50600065deadbeef001590506000805b84811015612185578215915060018101905061216e565b505080915050919050565b600061219a6115df565b50600065deadbeef001290506000805b848110156121c3578260011291506001810190506121aa565b505080915050919050565b60006121d86115df565b50600065deadbeef003b905060003060005b8581101561220157813b92506001810190506121ea565b50505080915050919050565b60006122176115df565b50600065deadbeef0009905060005b83811015612260577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600183099150600181019050612226565b5080915050919050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6122918161227e565b811461229c57600080fd5b50565b6000813590506122ae81612288565b92915050565b6000602082840312156122ca576122c9612274565b5b60006122d88482850161229f565b91505092915050565b6122ea8161227e565b82525050565b600060208201905061230560008301846122e1565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561234557808201518184015260208101905061232a565b60008484015250505050565b6000601f19601f8301169050919050565b600061236d8261230b565b6123778185612316565b9350612387818560208601612327565b61239081612351565b840191505092915050565b600060208201905081810360008301526123b58184612362565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6123ff82612351565b810181811067ffffffffffffffff8211171561241e5761241d6123c7565b5b80604052505050565b600061243161226a565b905061243d82826123f6565b919050565b600067ffffffffffffffff82111561245d5761245c6123c7565b5b61246682612351565b9050602081019050919050565b82818337600083830152505050565b600061249561249084612442565b612427565b9050828152602081018484840111156124b1576124b06123c2565b5b6124bc848285612473565b509392505050565b600082601f8301126124d9576124d86123bd565b5b81356124e9848260208601612482565b91505092915050565b60006020828403121561250857612507612274565b5b600082013567ffffffffffffffff81111561252657612525612279565b5b612532848285016124c4565b91505092915050565b6000819050919050565b61254e8161253b565b82525050565b60006020820190506125696000830184612545565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061259a8261256f565b9050919050565b6125aa8161258f565b82525050565b60006020820190506125c560008301846125a1565b92915050565b600080fd5b600080fd5b60008083601f8401126125eb576125ea6123bd565b5b8235905067ffffffffffffffff811115612608576126076125cb565b5b602083019150836001820283011115612624576126236125d0565b5b9250929050565b6000806020838503121561264257612641612274565b5b600083013567ffffffffffffffff8111156126605761265f612279565b5b61266c858286016125d5565b92509250509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806126bf57607f821691505b6020821081036126d2576126d1612678565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006127128261227e565b915061271d8361227e565b9250828201905080821115612735576127346126d8565b5b92915050565b600082825260208201905092915050565b7f496e76616c696420696e7075742064617461206c656e6774682e000000000000600082015250565b6000612782601a8361273b565b915061278d8261274c565b602082019050919050565b600060208201905081810360008301526127b181612775565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006127f28261227e565b91506127fd8361227e565b92508261280d5761280c6127b8565b5b828206905092915050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026128857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612848565b61288f8683612848565b95508019841693508086168417925050509392505050565b6000819050919050565b60006128cc6128c76128c28461227e565b6128a7565b61227e565b9050919050565b6000819050919050565b6128e6836128b1565b6128fa6128f2826128d3565b848454612855565b825550505050565b600090565b61290f612902565b61291a8184846128dd565b505050565b5b8181101561293e57612933600082612907565b600181019050612920565b5050565b601f8211156129835761295481612823565b61295d84612838565b8101602085101561296c578190505b61298061297885612838565b83018261291f565b50505b505050565b600082821c905092915050565b60006129a660001984600802612988565b1980831691505092915050565b60006129bf8383612995565b9150826002028217905092915050565b6129d98383612818565b67ffffffffffffffff8111156129f2576129f16123c7565b5b6129fc82546126a7565b612a07828285612942565b6000601f831160018114612a365760008415612a24578287013590505b612a2e85826129b3565b865550612a96565b601f198416612a4486612823565b60005b82811015612a6c57848901358255600182019150602085019450602081019050612a47565b86831015612a895784890135612a85601f891682612995565b8355505b6001600288020188555050505b5050505050505056fea26469706673582212204a9cf5efd0682f02ed0d6661486d32a6366e2e8118c3070ee23e44a788b11f4364736f6c63430008130033 \ No newline at end of file diff --git a/contracts/LoadTester.sol b/contracts/LoadTester.sol index c2d81699..3e46fa22 100644 --- a/contracts/LoadTester.sol +++ b/contracts/LoadTester.sol @@ -561,6 +561,7 @@ contract LoadTester { } return result; } + function testDIFFICULTY(uint x) public returns(uint) { inc(); uint result = 0xDEADBEEF0044; @@ -568,11 +569,15 @@ contract LoadTester { let v := 0 for { let i := 0 } lt(i, x) { i := add(i, 1) } { - v := difficulty() + // NOTE: Post Paris, the difficulty() instruction has been supplanted for prevrandao() + // Source: https://eips.ethereum.org/EIPS/eip-4399 + // v := difficulty() + v := prevrandao() } } return result; } + function testGASLIMIT(uint x) public returns(uint) { inc(); uint result = 0xDEADBEEF0045; @@ -765,4 +770,40 @@ contract LoadTester { } return result; } + + // Precompiled Contracts + function testSHA256(bytes memory inputData) public returns (bytes32 result) { + address SHA256_PRECOMPILED_CONTRACT = 0x0000000000000000000000000000000000000002; + + assembly { + let inputPtr := add(inputData, 0x20) + let inputLength := mload(inputData) + let outputPtr := result + let success := call(gas(), SHA256_PRECOMPILED_CONTRACT, 0, inputPtr, inputLength, outputPtr, 0x20) + if iszero(success) { + revert(0, 0) + } + } + } + + function testECRecover(bytes memory inputData) public returns (address result) { + require(inputData.length == 128, "Invalid input data length."); + + address EC_RECOVER_PRECOMPILED_CONTRACT = 0x0000000000000000000000000000000000000001; + + assembly { + let inputPtr := add(inputData, 0x20) // Skip the length prefix of the inputData bytes array + + // Set the correct 1-byte v value from the 32-byte v component + mstore(add(inputPtr, 0x20), byte(31, mload(add(inputPtr, 0x20)))) + + let success := call(gas(), EC_RECOVER_PRECOMPILED_CONTRACT, 0, inputPtr, 0x80, mload(0x40), 0x20) + if iszero(success) { + revert(0, 0) + } + + // Load the result from the memory + result := mload(mload(0x40)) + } + } } diff --git a/contracts/contracts.go b/contracts/contracts.go index 60e357c5..4801f8a9 100644 --- a/contracts/contracts.go +++ b/contracts/contracts.go @@ -10,6 +10,7 @@ import ( "github.com/ethereum/go-ethereum/accounts/abi/bind" ethtypes "github.com/ethereum/go-ethereum/core/types" + // "github.com/ethereum/go-ethereum/core/vm" "github.com/rs/zerolog/log" ) diff --git a/contracts/loadtester.go b/contracts/loadtester.go index 367296a3..066c806c 100644 --- a/contracts/loadtester.go +++ b/contracts/loadtester.go @@ -26,12 +26,13 @@ var ( _ = common.Big1 _ = types.BloomLookup _ = event.NewSubscription + _ = abi.ConvertType ) // LoadTesterMetaData contains all meta data concerning the LoadTester contract. var LoadTesterMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"dumpster\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCallCounter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inc\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"trash\",\"type\":\"bytes\"}],\"name\":\"store\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testADD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testADDMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testADDRESS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testAND\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBALANCE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBASEFEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBLOCKHASH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBYTE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLDATACOPY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLDATALOAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLDATASIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLER\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLVALUE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCHAINID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCODECOPY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCODESIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCOINBASE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testDIFFICULTY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testDIV\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testEQ\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testEXP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testEXTCODESIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGASLIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGASPRICE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testISZERO\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG0\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG3\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG4\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMLOAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMSIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMSTORE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMSTORE8\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMUL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMULMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testNOT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testNUMBER\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testORIGIN\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testRETURNDATACOPY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testRETURNDATASIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSAR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSDIV\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSELFBALANCE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSGT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSHA3\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSHL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSHR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSIGNEXTEND\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSLOAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSLT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSSTORE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSUB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testTIMESTAMP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testXOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b50612642806100206000396000f3fe608060405234801561001057600080fd5b50600436106103db5760003560e01c80637c191d201161020a578063bf529ca111610125578063d93cd558116100b8578063ea5141e611610087578063ea5141e614610efc578063f279ca8114610f2c578063f4d1fc6114610f5c578063f58fc36a14610f8c578063fde7721c14610fbc576103db565b8063d93cd55814610e3c578063dd9bef6014610e6c578063de97a36314610e9c578063e9f9b3f214610ecc576103db565b8063ce3cf4ef116100f4578063ce3cf4ef14610d7c578063d117320b14610dac578063d51e7b5b14610ddc578063d53ff3fd14610e0c576103db565b8063bf529ca114610cbc578063c360aba614610cec578063c420eb6114610d1c578063c4bd65d514610d4c576103db565b8063a60a10871161019d578063b3d847f21161016c578063b3d847f214610bfc578063b7b8620714610c2c578063b81c148414610c5c578063bdc875fc14610c8c576103db565b8063a60a108714610b3c578063a645c9c214610b6c578063acaebdf614610b9c578063b374012b14610bcc576103db565b8063918a5fcd116101d9578063918a5fcd14610a7c57806391e7b27714610aac57806398456f3e14610adc5780639a2b7c8114610b0c576103db565b80637c191d20146109bc5780637de8c6f8146109ec57806380947f8014610a1c578063880eff3914610a4c576103db565b80632b21ef44116102fa5780634a61af1f1161028d5780636e7f1fe71161025c5780636e7f1fe7146108fc5780636f099c8d1461092c57806371d91d281461095c5780637b6e0b0e1461098c576103db565b80634a61af1f1461083c5780634d2c74b31461086c5780635590c2d91461089c57806360e13cde146108cc576103db565b80633a411f12116102c95780633a411f121461077c5780633a425dfc146107ac57806340fe2662146107dc57806344cf3bc71461080c576103db565b80632b21ef44146106ce5780632d34e798146106fe5780633430ec061461072e578063371303c01461075e576103db565b806318093b46116103725780632007332e116103415780632007332e1461060e578063219cddeb1461063e5780632294fc7f1461066e5780632871ef851461069e576103db565b806318093b461461054e57806319b621d61461057e5780631aba07ea146105ae5780631de2f343146105de576103db565b80631287a68c116103ae5780631287a68c146104a0578063135d52f7146104be5780631581cf19146104ee578063165821501461051e576103db565b8063034aef71146103e0578063050082f814610410578063087b4e84146104405780630ba8a73b14610470575b600080fd5b6103fa60048036038101906103f591906120ad565b610fec565b60405161040791906120e9565b60405180910390f35b61042a600480360381019061042591906120ad565b611027565b60405161043791906120e9565b60405180910390f35b61045a600480360381019061045591906120ad565b611062565b60405161046791906120e9565b60405180910390f35b61048a600480360381019061048591906120ad565b61109c565b60405161049791906120e9565b60405180910390f35b6104a86110d8565b6040516104b591906120e9565b60405180910390f35b6104d860048036038101906104d391906120ad565b6110e1565b6040516104e591906120e9565b60405180910390f35b610508600480360381019061050391906120ad565b61111d565b60405161051591906120e9565b60405180910390f35b610538600480360381019061053391906120ad565b611158565b60405161054591906120e9565b60405180910390f35b610568600480360381019061056391906120ad565b6111b3565b60405161057591906120e9565b60405180910390f35b610598600480360381019061059391906120ad565b6111f1565b6040516105a591906120e9565b60405180910390f35b6105c860048036038101906105c391906120ad565b611280565b6040516105d591906120e9565b60405180910390f35b6105f860048036038101906105f391906120ad565b6112c6565b60405161060591906120e9565b60405180910390f35b610628600480360381019061062391906120ad565b611304565b60405161063591906120e9565b60405180910390f35b610658600480360381019061065391906120ad565b611340565b60405161066591906120e9565b60405180910390f35b610688600480360381019061068391906120ad565b61137b565b60405161069591906120e9565b60405180910390f35b6106b860048036038101906106b391906120ad565b6113ba565b6040516106c591906120e9565b60405180910390f35b6106e860048036038101906106e391906120ad565b6113f5565b6040516106f591906120e9565b60405180910390f35b610718600480360381019061071391906120ad565b611430565b60405161072591906120e9565b60405180910390f35b610748600480360381019061074391906120ad565b61146b565b604051610755919061219d565b60405180910390f35b610766611517565b60405161077391906120e9565b60405180910390f35b610796600480360381019061079191906120ad565b611536565b6040516107a391906120e9565b60405180910390f35b6107c660048036038101906107c191906120ad565b611572565b6040516107d391906120e9565b60405180910390f35b6107f660048036038101906107f191906120ad565b6115ae565b60405161080391906120e9565b60405180910390f35b610826600480360381019061082191906120ad565b6115ed565b60405161083391906120e9565b60405180910390f35b610856600480360381019061085191906120ad565b611628565b60405161086391906120e9565b60405180910390f35b610886600480360381019061088191906120ad565b611666565b60405161089391906120e9565b60405180910390f35b6108b660048036038101906108b191906120ad565b6116a1565b6040516108c391906120e9565b60405180910390f35b6108e660048036038101906108e191906120ad565b6116e6565b6040516108f391906120e9565b60405180910390f35b610916600480360381019061091191906120ad565b611722565b60405161092391906120e9565b60405180910390f35b610946600480360381019061094191906120ad565b611760565b60405161095391906120e9565b60405180910390f35b610976600480360381019061097191906120ad565b61179b565b60405161098391906120e9565b60405180910390f35b6109a660048036038101906109a191906120ad565b6117d9565b6040516109b391906120e9565b60405180910390f35b6109d660048036038101906109d191906120ad565b611815565b6040516109e391906120e9565b60405180910390f35b610a066004803603810190610a0191906120ad565b611850565b604051610a1391906120e9565b60405180910390f35b610a366004803603810190610a3191906120ad565b61188c565b604051610a4391906120e9565b60405180910390f35b610a666004803603810190610a6191906120ad565b6118e9565b604051610a7391906120e9565b60405180910390f35b610a966004803603810190610a9191906120ad565b611928565b604051610aa391906120e9565b60405180910390f35b610ac66004803603810190610ac191906120ad565b611963565b604051610ad391906120e9565b60405180910390f35b610af66004803603810190610af191906120ad565b6119af565b604051610b0391906120e9565b60405180910390f35b610b266004803603810190610b2191906120ad565b6119ef565b604051610b3391906120e9565b60405180910390f35b610b566004803603810190610b5191906120ad565b611a2a565b604051610b6391906120e9565b60405180910390f35b610b866004803603810190610b8191906120ad565b611a65565b604051610b9391906120e9565b60405180910390f35b610bb66004803603810190610bb191906120ad565b611aa1565b604051610bc391906120e9565b60405180910390f35b610be66004803603810190610be19190612224565b611add565b604051610bf391906120e9565b60405180910390f35b610c166004803603810190610c1191906120ad565b611b2b565b604051610c2391906120e9565b60405180910390f35b610c466004803603810190610c4191906120ad565b611b66565b604051610c5391906120e9565b60405180910390f35b610c766004803603810190610c7191906120ad565b611ba1565b604051610c8391906120e9565b60405180910390f35b610ca66004803603810190610ca191906120ad565b611bdc565b604051610cb391906120e9565b60405180910390f35b610cd66004803603810190610cd191906120ad565b611c17565b604051610ce391906120e9565b60405180910390f35b610d066004803603810190610d0191906120ad565b611c5b565b604051610d1391906120e9565b60405180910390f35b610d366004803603810190610d3191906120ad565b611c97565b604051610d4391906120e9565b60405180910390f35b610d666004803603810190610d6191906120ad565b611cd2565b604051610d7391906120e9565b60405180910390f35b610d966004803603810190610d9191906120ad565b611d10565b604051610da391906120e9565b60405180910390f35b610dc66004803603810190610dc191906120ad565b611d4d565b604051610dd391906120e9565b60405180910390f35b610df66004803603810190610df191906120ad565b611d87565b604051610e0391906120e9565b60405180910390f35b610e266004803603810190610e2191906120ad565b611dc3565b604051610e3391906120e9565b60405180910390f35b610e566004803603810190610e5191906120ad565b611dff565b604051610e6391906120e9565b60405180910390f35b610e866004803603810190610e8191906120ad565b611e5a565b604051610e9391906120e9565b60405180910390f35b610eb66004803603810190610eb191906120ad565b611e9c565b604051610ec391906120e9565b60405180910390f35b610ee66004803603810190610ee191906120ad565b611ed8565b604051610ef391906120e9565b60405180910390f35b610f166004803603810190610f1191906120ad565b611f15565b604051610f2391906120e9565b60405180910390f35b610f466004803603810190610f4191906120ad565b611f57565b604051610f5391906120e9565b60405180910390f35b610f766004803603810190610f7191906120ad565b611f93565b604051610f8391906120e9565b60405180910390f35b610fa66004803603810190610fa191906120ad565b611fd1565b604051610fb391906120e9565b60405180910390f35b610fd66004803603810190610fd191906120ad565b612010565b604051610fe391906120e9565b60405180910390f35b6000610ff6611517565b50600065deadbeef003690506000805b8481101561101c57369150600181019050611006565b505080915050919050565b6000611031611517565b50600065deadbeef003290506000805b8481101561105757329150600181019050611041565b505080915050919050565b600061106c611517565b50600065deadbeef0052905060005b83811015611092578160005260018101905061107b565b5080915050919050565b60006110a6611517565b50600065deadbeef0001905060005b838110156110ce576000820191506001810190506110b5565b5080915050919050565b60008054905090565b60006110eb611517565b50600065deadbeef0017905060005b83811015611113576000821791506001810190506110fa565b5080915050919050565b6000611127611517565b50600065deadbeef003490506000805b8481101561114d57349150600181019050611137565b505080915050919050565b6000611162611517565b50600065deadbeef0006905060005b838110156111a9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82069150600181019050611171565b5080915050919050565b60006111bd611517565b50600065deadbeef001390506000805b848110156111e6576001831391506001810190506111cd565b505080915050919050565b60006111fb611517565b50600065deadbeef002090507fffffffff000000000000000000000000000000000000000000000000000000006000526000805b84811015611249576004600020915060018101905061122f565b507f29045a592007d0c246ef02c2223570da9522d0cf0f73282c79a1bc8f0bb2c238811461127657600091505b5080915050919050565b600061128a611517565b50600065deadbeef00a490508060105260005b838110156112bc576004600360028360066010a460018101905061129d565b5080915050919050565b60006112d0611517565b50600065deadbeef001a90506000805b848110156112f9578260001a91506001810190506112e0565b505080915050919050565b600061130e611517565b50600065deadbeef001b905060005b83811015611336578160001b915060018101905061131d565b5080915050919050565b600061134a611517565b50600065deadbeef004290506000805b848110156113705742915060018101905061135a565b505080915050919050565b6000611385611517565b50600065deadbeef0031905060003060005b858110156113ae5781319250600181019050611397565b50505080915050919050565b60006113c4611517565b50600065deadbeef004890506000805b848110156113ea574891506001810190506113d4565b505080915050919050565b60006113ff611517565b50600065deadbeef003d90506000805b84811015611425573d915060018101905061140f565b505080915050919050565b600061143a611517565b50600065deadbeef004390506000805b848110156114605743915060018101905061144a565b505080915050919050565b6001818154811061147b57600080fd5b906000526020600020016000915090508054611496906122a0565b80601f01602080910402602001604051908101604052809291908181526020018280546114c2906122a0565b801561150f5780601f106114e45761010080835404028352916020019161150f565b820191906000526020600020905b8154815290600101906020018083116114f257829003601f168201915b505050505081565b600060016000546115289190612300565b600081905550600054905090565b6000611540611517565b50600065deadbeef0004905060005b838110156115685760018204915060018101905061154f565b5080915050919050565b600061157c611517565b50600065deadbeef0037905060005b838110156115a45760206000803760018101905061158b565b5080915050919050565b60006115b8611517565b50600065deadbeef00a090508060105260005b838110156115e35760066010a06001810190506115cb565b5080915050919050565b60006115f7611517565b50600065deadbeef003390506000805b8481101561161d57339150600181019050611607565b505080915050919050565b6000611632611517565b50600065deadbeef0053905060005b8381101561165c5763deadbeef600052600181019050611641565b5080915050919050565b6000611670611517565b50600065deadbeef003a90506000805b84811015611696573a9150600181019050611680565b505080915050919050565b60006116ab611517565b50600065deadbeef0051905060008160005260005b848110156116d85760005191506001810190506116c0565b508091505080915050919050565b60006116f0611517565b50600065deadbeef001d905060005b83811015611718578160001d91506001810190506116ff565b5080915050919050565b600061172c611517565b50600065deadbeef001090506000805b848110156117555782600110915060018101905061173c565b505080915050919050565b600061176a611517565b50600065deadbeef004490506000805b848110156117905744915060018101905061177a565b505080915050919050565b60006117a5611517565b50600065deadbeef001190506000805b848110156117ce576001831191506001810190506117b5565b505080915050919050565b60006117e3611517565b50600065deadbeef003e905060005b8381101561180b5760206000803e6001810190506117f2565b5080915050919050565b600061181f611517565b50600065deadbeef004590506000805b848110156118455745915060018101905061182f565b505080915050919050565b600061185a611517565b50600065deadbeef0002905060005b8381101561188257600182029150600181019050611869565b5080915050919050565b6000611896611517565b50600065deadbeef0008905060005b838110156118df577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000830891506001810190506118a5565b5080915050919050565b60006118f3611517565b50600065deadbeef005490508060005560005b8381101561191e576000549150600181019050611906565b5080915050919050565b6000611932611517565b50600065deadbeef005a90506000805b84811015611958575a9150600181019050611942565b505080915050919050565b600061196d611517565b50600065deadbeef0019905060005b83811015611993578119915060018101905061197c565b5065deadbeef001981146119a657801990505b80915050919050565b60006119b9611517565b50600065deadbeef00a190508060105260005b838110156119e5578060066010a16001810190506119cc565b5080915050919050565b60006119f9611517565b50600065deadbeef0016905060005b83811015611a20578182169150600181019050611a08565b5080915050919050565b6000611a34611517565b50600065deadbeef004690506000805b84811015611a5a57469150600181019050611a44565b505080915050919050565b6000611a6f611517565b50600065deadbeef0005905060005b83811015611a9757600182059150600181019050611a7e565b5080915050919050565b6000611aab611517565b50600065deadbeef0039905060005b83811015611ad357602060008039600181019050611aba565b5080915050919050565b60006001838390918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611b1c92919061253c565b50600180549050905092915050565b6000611b35611517565b50600065deadbeef005990506000805b84811015611b5b57599150600181019050611b45565b505080915050919050565b6000611b70611517565b50600065deadbeef003890506000805b84811015611b9657389150600181019050611b80565b505080915050919050565b6000611bab611517565b50600065deadbeef004190506000805b84811015611bd157419150600181019050611bbb565b505080915050919050565b6000611be6611517565b50600065deadbeef003090506000805b84811015611c0c57309150600181019050611bf6565b505080915050919050565b6000611c21611517565b50600065deadbeef00a390508060105260005b83811015611c5157600360028260066010a3600181019050611c34565b5080915050919050565b6000611c65611517565b50600065deadbeef000b905060005b83811015611c8d578160200b9150600181019050611c74565b5080915050919050565b6000611ca1611517565b50600065deadbeef004790506000805b84811015611cc757479150600181019050611cb1565b505080915050919050565b6000611cdc611517565b50600065deadbeef001c90506000805b84811015611d05578260001c9250600181019050611cec565b505080915050919050565b6000611d1a611517565b50600065deadbeef003590506000805b84811015611d42576000359150600181019050611d2a565b505080915050919050565b6000611d57611517565b50600065deadbeef0055905060005b83811015611d7d5781600055600181019050611d66565b5080915050919050565b6000611d91611517565b50600065deadbeef0018905060005b83811015611db957600082189150600181019050611da0565b5080915050919050565b6000611dcd611517565b50600065deadbeef0003905060005b83811015611df557600082039150600181019050611ddc565b5080915050919050565b6000611e09611517565b50600065deadbeef0007905060005b83811015611e50577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82079150600181019050611e18565b5080915050919050565b6000611e64611517565b50600065deadbeef00a290508060105260005b83811015611e925760028160066010a2600181019050611e77565b5080915050919050565b6000611ea6611517565b50600065deadbeef000a905060005b83811015611ece576001820a9150600181019050611eb5565b5080915050919050565b6000611ee2611517565b50600065deadbeef001490506000805b84811015611f0a578283149150600181019050611ef2565b505080915050919050565b6000611f1f611517565b50600065deadbeef0040905060006001430360005b85811015611f4b5781409250600181019050611f34565b50505080915050919050565b6000611f61611517565b50600065deadbeef001590506000805b84811015611f885782159150600181019050611f71565b505080915050919050565b6000611f9d611517565b50600065deadbeef001290506000805b84811015611fc657826001129150600181019050611fad565b505080915050919050565b6000611fdb611517565b50600065deadbeef003b905060003060005b8581101561200457813b9250600181019050611fed565b50505080915050919050565b600061201a611517565b50600065deadbeef0009905060005b83811015612063577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600183099150600181019050612029565b5080915050919050565b600080fd5b600080fd5b6000819050919050565b61208a81612077565b811461209557600080fd5b50565b6000813590506120a781612081565b92915050565b6000602082840312156120c3576120c261206d565b5b60006120d184828501612098565b91505092915050565b6120e381612077565b82525050565b60006020820190506120fe60008301846120da565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561213e578082015181840152602081019050612123565b8381111561214d576000848401525b50505050565b6000601f19601f8301169050919050565b600061216f82612104565b612179818561210f565b9350612189818560208601612120565b61219281612153565b840191505092915050565b600060208201905081810360008301526121b78184612164565b905092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126121e4576121e36121bf565b5b8235905067ffffffffffffffff811115612201576122006121c4565b5b60208301915083600182028301111561221d5761221c6121c9565b5b9250929050565b6000806020838503121561223b5761223a61206d565b5b600083013567ffffffffffffffff81111561225957612258612072565b5b612265858286016121ce565b92509250509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806122b857607f821691505b6020821081036122cb576122ca612271565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061230b82612077565b915061231683612077565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561234b5761234a6122d1565b5b828201905092915050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026123f27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826123b5565b6123fc86836123b5565b95508019841693508086168417925050509392505050565b6000819050919050565b600061243961243461242f84612077565b612414565b612077565b9050919050565b6000819050919050565b6124538361241e565b61246761245f82612440565b8484546123c2565b825550505050565b600090565b61247c61246f565b61248781848461244a565b505050565b5b818110156124ab576124a0600082612474565b60018101905061248d565b5050565b601f8211156124f0576124c181612390565b6124ca846123a5565b810160208510156124d9578190505b6124ed6124e5856123a5565b83018261248c565b50505b505050565b600082821c905092915050565b6000612513600019846008026124f5565b1980831691505092915050565b600061252c8383612502565b9150826002028217905092915050565b6125468383612356565b67ffffffffffffffff81111561255f5761255e612361565b5b61256982546122a0565b6125748282856124af565b6000601f8311600181146125a35760008415612591578287013590505b61259b8582612520565b865550612603565b601f1984166125b186612390565b60005b828110156125d9578489013582556001820191506020850194506020810190506125b4565b868310156125f657848901356125f2601f891682612502565b8355505b6001600288020188555050505b5050505050505056fea2646970667358221220c9e1182df71dfdc6eb49d545e0c6929c5dfe19c94d7c1bba484ad70b88f8e09064736f6c634300080f0033", + ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"dumpster\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCallCounter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inc\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"loopBlockHashUntilLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"loopUntilLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"trash\",\"type\":\"bytes\"}],\"name\":\"store\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testADD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testADDMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testADDRESS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testAND\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBALANCE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBASEFEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBLOCKHASH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBYTE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLDATACOPY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLDATALOAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLDATASIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLER\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLVALUE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCHAINID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCODECOPY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCODESIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCOINBASE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testDIFFICULTY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testDIV\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testECRecover\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"result\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testEQ\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testEXP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testEXTCODESIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGASLIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGASPRICE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testISZERO\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG0\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG3\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG4\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMLOAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMSIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMSTORE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMSTORE8\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMUL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMULMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testNOT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testNUMBER\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testORIGIN\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testRETURNDATACOPY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testRETURNDATASIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSAR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSDIV\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSELFBALANCE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSGT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testSHA256\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"result\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSHA3\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSHL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSHR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSIGNEXTEND\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSLOAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSLT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSSTORE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSUB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testTIMESTAMP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testXOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x608060405234801561001057600080fd5b50612ad5806100206000396000f3fe608060405234801561001057600080fd5b50600436106104075760003560e01c80637c191d2011610220578063bdc875fc11610130578063d93cd558116100b8578063ea5141e611610087578063ea5141e614610fc4578063f279ca8114610ff4578063f4d1fc6114611024578063f58fc36a14611054578063fde7721c1461108457610407565b8063d93cd55814610f04578063dd9bef6014610f34578063de97a36314610f64578063e9f9b3f214610f9457610407565b8063c4bd65d5116100ff578063c4bd65d514610e14578063ce3cf4ef14610e44578063d117320b14610e74578063d51e7b5b14610ea4578063d53ff3fd14610ed457610407565b8063bdc875fc14610d54578063bf529ca114610d84578063c360aba614610db4578063c420eb6114610de457610407565b8063a18683cb116101b3578063acaebdf611610182578063acaebdf614610c64578063b374012b14610c94578063b3d847f214610cc4578063b7b8620714610cf4578063b81c148414610d2457610407565b8063a18683cb14610bb6578063a271b72114610be6578063a60a108714610c04578063a645c9c214610c3457610407565b8063918a5fcd116101ef578063918a5fcd14610af657806391e7b27714610b2657806398456f3e14610b565780639a2b7c8114610b8657610407565b80637c191d2014610a365780637de8c6f814610a6657806380947f8014610a96578063880eff3914610ac657610407565b80632d34e7981161031b5780634d2c74b3116102ae578063659bbb4f1161027d578063659bbb4f146109585780636e7f1fe7146109765780636f099c8d146109a657806371d91d28146109d65780637b6e0b0e14610a0657610407565b80634d2c74b3146108985780635590c2d9146108c857806360e13cde146108f857806363138d4f1461092857610407565b80633a425dfc116102ea5780633a425dfc146107d857806340fe26621461080857806344cf3bc7146108385780634a61af1f1461086857610407565b80632d34e7981461072a5780633430ec061461075a578063371303c01461078a5780633a411f12146107a857610407565b806318093b461161039e5780632007332e1161036d5780632007332e1461063a578063219cddeb1461066a5780632294fc7f1461069a5780632871ef85146106ca5780632b21ef44146106fa57610407565b806318093b461461057a57806319b621d6146105aa5780631aba07ea146105da5780631de2f3431461060a57610407565b80631287a68c116103da5780631287a68c146104cc578063135d52f7146104ea5780631581cf191461051a578063165821501461054a57610407565b8063034aef711461040c578063050082f81461043c578063087b4e841461046c5780630ba8a73b1461049c575b600080fd5b610426600480360381019061042191906122b4565b6110b4565b60405161043391906122f0565b60405180910390f35b610456600480360381019061045191906122b4565b6110ef565b60405161046391906122f0565b60405180910390f35b610486600480360381019061048191906122b4565b61112a565b60405161049391906122f0565b60405180910390f35b6104b660048036038101906104b191906122b4565b611164565b6040516104c391906122f0565b60405180910390f35b6104d46111a0565b6040516104e191906122f0565b60405180910390f35b61050460048036038101906104ff91906122b4565b6111a9565b60405161051191906122f0565b60405180910390f35b610534600480360381019061052f91906122b4565b6111e5565b60405161054191906122f0565b60405180910390f35b610564600480360381019061055f91906122b4565b611220565b60405161057191906122f0565b60405180910390f35b610594600480360381019061058f91906122b4565b61127b565b6040516105a191906122f0565b60405180910390f35b6105c460048036038101906105bf91906122b4565b6112b9565b6040516105d191906122f0565b60405180910390f35b6105f460048036038101906105ef91906122b4565b611348565b60405161060191906122f0565b60405180910390f35b610624600480360381019061061f91906122b4565b61138e565b60405161063191906122f0565b60405180910390f35b610654600480360381019061064f91906122b4565b6113cc565b60405161066191906122f0565b60405180910390f35b610684600480360381019061067f91906122b4565b611408565b60405161069191906122f0565b60405180910390f35b6106b460048036038101906106af91906122b4565b611443565b6040516106c191906122f0565b60405180910390f35b6106e460048036038101906106df91906122b4565b611482565b6040516106f191906122f0565b60405180910390f35b610714600480360381019061070f91906122b4565b6114bd565b60405161072191906122f0565b60405180910390f35b610744600480360381019061073f91906122b4565b6114f8565b60405161075191906122f0565b60405180910390f35b610774600480360381019061076f91906122b4565b611533565b604051610781919061239b565b60405180910390f35b6107926115df565b60405161079f91906122f0565b60405180910390f35b6107c260048036038101906107bd91906122b4565b6115fe565b6040516107cf91906122f0565b60405180910390f35b6107f260048036038101906107ed91906122b4565b61163a565b6040516107ff91906122f0565b60405180910390f35b610822600480360381019061081d91906122b4565b611676565b60405161082f91906122f0565b60405180910390f35b610852600480360381019061084d91906122b4565b6116b5565b60405161085f91906122f0565b60405180910390f35b610882600480360381019061087d91906122b4565b6116f0565b60405161088f91906122f0565b60405180910390f35b6108b260048036038101906108ad91906122b4565b61172e565b6040516108bf91906122f0565b60405180910390f35b6108e260048036038101906108dd91906122b4565b611769565b6040516108ef91906122f0565b60405180910390f35b610912600480360381019061090d91906122b4565b6117ae565b60405161091f91906122f0565b60405180910390f35b610942600480360381019061093d91906124f2565b6117ea565b60405161094f9190612554565b60405180910390f35b610960611816565b60405161096d91906122f0565b60405180910390f35b610990600480360381019061098b91906122b4565b611852565b60405161099d91906122f0565b60405180910390f35b6109c060048036038101906109bb91906122b4565b611890565b6040516109cd91906122f0565b60405180910390f35b6109f060048036038101906109eb91906122b4565b6118cb565b6040516109fd91906122f0565b60405180910390f35b610a206004803603810190610a1b91906122b4565b611909565b604051610a2d91906122f0565b60405180910390f35b610a506004803603810190610a4b91906122b4565b611945565b604051610a5d91906122f0565b60405180910390f35b610a806004803603810190610a7b91906122b4565b611980565b604051610a8d91906122f0565b60405180910390f35b610ab06004803603810190610aab91906122b4565b6119bc565b604051610abd91906122f0565b60405180910390f35b610ae06004803603810190610adb91906122b4565b611a19565b604051610aed91906122f0565b60405180910390f35b610b106004803603810190610b0b91906122b4565b611a58565b604051610b1d91906122f0565b60405180910390f35b610b406004803603810190610b3b91906122b4565b611a93565b604051610b4d91906122f0565b60405180910390f35b610b706004803603810190610b6b91906122b4565b611adf565b604051610b7d91906122f0565b60405180910390f35b610ba06004803603810190610b9b91906122b4565b611b1f565b604051610bad91906122f0565b60405180910390f35b610bd06004803603810190610bcb91906124f2565b611b5a565b604051610bdd91906125b0565b60405180910390f35b610bee611bdc565b604051610bfb91906122f0565b60405180910390f35b610c1e6004803603810190610c1991906122b4565b611c27565b604051610c2b91906122f0565b60405180910390f35b610c4e6004803603810190610c4991906122b4565b611c62565b604051610c5b91906122f0565b60405180910390f35b610c7e6004803603810190610c7991906122b4565b611c9e565b604051610c8b91906122f0565b60405180910390f35b610cae6004803603810190610ca9919061262b565b611cda565b604051610cbb91906122f0565b60405180910390f35b610cde6004803603810190610cd991906122b4565b611d28565b604051610ceb91906122f0565b60405180910390f35b610d0e6004803603810190610d0991906122b4565b611d63565b604051610d1b91906122f0565b60405180910390f35b610d3e6004803603810190610d3991906122b4565b611d9e565b604051610d4b91906122f0565b60405180910390f35b610d6e6004803603810190610d6991906122b4565b611dd9565b604051610d7b91906122f0565b60405180910390f35b610d9e6004803603810190610d9991906122b4565b611e14565b604051610dab91906122f0565b60405180910390f35b610dce6004803603810190610dc991906122b4565b611e58565b604051610ddb91906122f0565b60405180910390f35b610dfe6004803603810190610df991906122b4565b611e94565b604051610e0b91906122f0565b60405180910390f35b610e2e6004803603810190610e2991906122b4565b611ecf565b604051610e3b91906122f0565b60405180910390f35b610e5e6004803603810190610e5991906122b4565b611f0d565b604051610e6b91906122f0565b60405180910390f35b610e8e6004803603810190610e8991906122b4565b611f4a565b604051610e9b91906122f0565b60405180910390f35b610ebe6004803603810190610eb991906122b4565b611f84565b604051610ecb91906122f0565b60405180910390f35b610eee6004803603810190610ee991906122b4565b611fc0565b604051610efb91906122f0565b60405180910390f35b610f1e6004803603810190610f1991906122b4565b611ffc565b604051610f2b91906122f0565b60405180910390f35b610f4e6004803603810190610f4991906122b4565b612057565b604051610f5b91906122f0565b60405180910390f35b610f7e6004803603810190610f7991906122b4565b612099565b604051610f8b91906122f0565b60405180910390f35b610fae6004803603810190610fa991906122b4565b6120d5565b604051610fbb91906122f0565b60405180910390f35b610fde6004803603810190610fd991906122b4565b612112565b604051610feb91906122f0565b60405180910390f35b61100e600480360381019061100991906122b4565b612154565b60405161101b91906122f0565b60405180910390f35b61103e600480360381019061103991906122b4565b612190565b60405161104b91906122f0565b60405180910390f35b61106e600480360381019061106991906122b4565b6121ce565b60405161107b91906122f0565b60405180910390f35b61109e600480360381019061109991906122b4565b61220d565b6040516110ab91906122f0565b60405180910390f35b60006110be6115df565b50600065deadbeef003690506000805b848110156110e4573691506001810190506110ce565b505080915050919050565b60006110f96115df565b50600065deadbeef003290506000805b8481101561111f57329150600181019050611109565b505080915050919050565b60006111346115df565b50600065deadbeef0052905060005b8381101561115a5781600052600181019050611143565b5080915050919050565b600061116e6115df565b50600065deadbeef0001905060005b838110156111965760008201915060018101905061117d565b5080915050919050565b60008054905090565b60006111b36115df565b50600065deadbeef0017905060005b838110156111db576000821791506001810190506111c2565b5080915050919050565b60006111ef6115df565b50600065deadbeef003490506000805b84811015611215573491506001810190506111ff565b505080915050919050565b600061122a6115df565b50600065deadbeef0006905060005b83811015611271577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82069150600181019050611239565b5080915050919050565b60006112856115df565b50600065deadbeef001390506000805b848110156112ae57600183139150600181019050611295565b505080915050919050565b60006112c36115df565b50600065deadbeef002090507fffffffff000000000000000000000000000000000000000000000000000000006000526000805b8481101561131157600460002091506001810190506112f7565b507f29045a592007d0c246ef02c2223570da9522d0cf0f73282c79a1bc8f0bb2c238811461133e57600091505b5080915050919050565b60006113526115df565b50600065deadbeef00a490508060105260005b83811015611384576004600360028360066010a4600181019050611365565b5080915050919050565b60006113986115df565b50600065deadbeef001a90506000805b848110156113c1578260001a91506001810190506113a8565b505080915050919050565b60006113d66115df565b50600065deadbeef001b905060005b838110156113fe578160001b91506001810190506113e5565b5080915050919050565b60006114126115df565b50600065deadbeef004290506000805b8481101561143857429150600181019050611422565b505080915050919050565b600061144d6115df565b50600065deadbeef0031905060003060005b85811015611476578131925060018101905061145f565b50505080915050919050565b600061148c6115df565b50600065deadbeef004890506000805b848110156114b25748915060018101905061149c565b505080915050919050565b60006114c76115df565b50600065deadbeef003d90506000805b848110156114ed573d91506001810190506114d7565b505080915050919050565b60006115026115df565b50600065deadbeef004390506000805b8481101561152857439150600181019050611512565b505080915050919050565b6002818154811061154357600080fd5b90600052602060002001600091509050805461155e906126a7565b80601f016020809104026020016040519081016040528092919081815260200182805461158a906126a7565b80156115d75780601f106115ac576101008083540402835291602001916115d7565b820191906000526020600020905b8154815290600101906020018083116115ba57829003601f168201915b505050505081565b600060016000546115f09190612707565b600081905550600054905090565b60006116086115df565b50600065deadbeef0004905060005b8381101561163057600182049150600181019050611617565b5080915050919050565b60006116446115df565b50600065deadbeef0037905060005b8381101561166c57602060008037600181019050611653565b5080915050919050565b60006116806115df565b50600065deadbeef00a090508060105260005b838110156116ab5760066010a0600181019050611693565b5080915050919050565b60006116bf6115df565b50600065deadbeef003390506000805b848110156116e5573391506001810190506116cf565b505080915050919050565b60006116fa6115df565b50600065deadbeef0053905060005b838110156117245763deadbeef600052600181019050611709565b5080915050919050565b60006117386115df565b50600065deadbeef003a90506000805b8481101561175e573a9150600181019050611748565b505080915050919050565b60006117736115df565b50600065deadbeef0051905060008160005260005b848110156117a0576000519150600181019050611788565b508091505080915050919050565b60006117b86115df565b50600065deadbeef001d905060005b838110156117e0578160001d91506001810190506117c7565b5080915050919050565b600080600290506020830183518360208183856000885af18061180c57600080fd5b5050505050919050565b60006118206115df565b505b6103e85a111561184a57600180600082825461183e9190612707565b92505081905550611822565b600154905090565b600061185c6115df565b50600065deadbeef001090506000805b848110156118855782600110915060018101905061186c565b505080915050919050565b600061189a6115df565b50600065deadbeef004490506000805b848110156118c0574491506001810190506118aa565b505080915050919050565b60006118d56115df565b50600065deadbeef001190506000805b848110156118fe576001831191506001810190506118e5565b505080915050919050565b60006119136115df565b50600065deadbeef003e905060005b8381101561193b5760206000803e600181019050611922565b5080915050919050565b600061194f6115df565b50600065deadbeef004590506000805b848110156119755745915060018101905061195f565b505080915050919050565b600061198a6115df565b50600065deadbeef0002905060005b838110156119b257600182029150600181019050611999565b5080915050919050565b60006119c66115df565b50600065deadbeef0008905060005b83811015611a0f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000830891506001810190506119d5565b5080915050919050565b6000611a236115df565b50600065deadbeef005490508060005560005b83811015611a4e576000549150600181019050611a36565b5080915050919050565b6000611a626115df565b50600065deadbeef005a90506000805b84811015611a88575a9150600181019050611a72565b505080915050919050565b6000611a9d6115df565b50600065deadbeef0019905060005b83811015611ac35781199150600181019050611aac565b5065deadbeef00198114611ad657801990505b80915050919050565b6000611ae96115df565b50600065deadbeef00a190508060105260005b83811015611b15578060066010a1600181019050611afc565b5080915050919050565b6000611b296115df565b50600065deadbeef0016905060005b83811015611b50578182169150600181019050611b38565b5080915050919050565b60006080825114611ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9790612798565b60405180910390fd5b600060019050602083016020810151601f1a602082015260206040516080836000865af180611bce57600080fd5b604051519350505050919050565b6000611be66115df565b505b6103e85a1115611c1f576001806000828254611c049190612707565b9250508190555043600154611c1991906127e7565b50611be8565b600154905090565b6000611c316115df565b50600065deadbeef004690506000805b84811015611c5757469150600181019050611c41565b505080915050919050565b6000611c6c6115df565b50600065deadbeef0005905060005b83811015611c9457600182059150600181019050611c7b565b5080915050919050565b6000611ca86115df565b50600065deadbeef0039905060005b83811015611cd057602060008039600181019050611cb7565b5080915050919050565b60006002838390918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611d199291906129cf565b50600280549050905092915050565b6000611d326115df565b50600065deadbeef005990506000805b84811015611d5857599150600181019050611d42565b505080915050919050565b6000611d6d6115df565b50600065deadbeef003890506000805b84811015611d9357389150600181019050611d7d565b505080915050919050565b6000611da86115df565b50600065deadbeef004190506000805b84811015611dce57419150600181019050611db8565b505080915050919050565b6000611de36115df565b50600065deadbeef003090506000805b84811015611e0957309150600181019050611df3565b505080915050919050565b6000611e1e6115df565b50600065deadbeef00a390508060105260005b83811015611e4e57600360028260066010a3600181019050611e31565b5080915050919050565b6000611e626115df565b50600065deadbeef000b905060005b83811015611e8a578160200b9150600181019050611e71565b5080915050919050565b6000611e9e6115df565b50600065deadbeef004790506000805b84811015611ec457479150600181019050611eae565b505080915050919050565b6000611ed96115df565b50600065deadbeef001c90506000805b84811015611f02578260001c9250600181019050611ee9565b505080915050919050565b6000611f176115df565b50600065deadbeef003590506000805b84811015611f3f576000359150600181019050611f27565b505080915050919050565b6000611f546115df565b50600065deadbeef0055905060005b83811015611f7a5781600055600181019050611f63565b5080915050919050565b6000611f8e6115df565b50600065deadbeef0018905060005b83811015611fb657600082189150600181019050611f9d565b5080915050919050565b6000611fca6115df565b50600065deadbeef0003905060005b83811015611ff257600082039150600181019050611fd9565b5080915050919050565b60006120066115df565b50600065deadbeef0007905060005b8381101561204d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82079150600181019050612015565b5080915050919050565b60006120616115df565b50600065deadbeef00a290508060105260005b8381101561208f5760028160066010a2600181019050612074565b5080915050919050565b60006120a36115df565b50600065deadbeef000a905060005b838110156120cb576001820a91506001810190506120b2565b5080915050919050565b60006120df6115df565b50600065deadbeef001490506000805b848110156121075782831491506001810190506120ef565b505080915050919050565b600061211c6115df565b50600065deadbeef0040905060006001430360005b858110156121485781409250600181019050612131565b50505080915050919050565b600061215e6115df565b50600065deadbeef001590506000805b84811015612185578215915060018101905061216e565b505080915050919050565b600061219a6115df565b50600065deadbeef001290506000805b848110156121c3578260011291506001810190506121aa565b505080915050919050565b60006121d86115df565b50600065deadbeef003b905060003060005b8581101561220157813b92506001810190506121ea565b50505080915050919050565b60006122176115df565b50600065deadbeef0009905060005b83811015612260577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600183099150600181019050612226565b5080915050919050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6122918161227e565b811461229c57600080fd5b50565b6000813590506122ae81612288565b92915050565b6000602082840312156122ca576122c9612274565b5b60006122d88482850161229f565b91505092915050565b6122ea8161227e565b82525050565b600060208201905061230560008301846122e1565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561234557808201518184015260208101905061232a565b60008484015250505050565b6000601f19601f8301169050919050565b600061236d8261230b565b6123778185612316565b9350612387818560208601612327565b61239081612351565b840191505092915050565b600060208201905081810360008301526123b58184612362565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6123ff82612351565b810181811067ffffffffffffffff8211171561241e5761241d6123c7565b5b80604052505050565b600061243161226a565b905061243d82826123f6565b919050565b600067ffffffffffffffff82111561245d5761245c6123c7565b5b61246682612351565b9050602081019050919050565b82818337600083830152505050565b600061249561249084612442565b612427565b9050828152602081018484840111156124b1576124b06123c2565b5b6124bc848285612473565b509392505050565b600082601f8301126124d9576124d86123bd565b5b81356124e9848260208601612482565b91505092915050565b60006020828403121561250857612507612274565b5b600082013567ffffffffffffffff81111561252657612525612279565b5b612532848285016124c4565b91505092915050565b6000819050919050565b61254e8161253b565b82525050565b60006020820190506125696000830184612545565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061259a8261256f565b9050919050565b6125aa8161258f565b82525050565b60006020820190506125c560008301846125a1565b92915050565b600080fd5b600080fd5b60008083601f8401126125eb576125ea6123bd565b5b8235905067ffffffffffffffff811115612608576126076125cb565b5b602083019150836001820283011115612624576126236125d0565b5b9250929050565b6000806020838503121561264257612641612274565b5b600083013567ffffffffffffffff8111156126605761265f612279565b5b61266c858286016125d5565b92509250509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806126bf57607f821691505b6020821081036126d2576126d1612678565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006127128261227e565b915061271d8361227e565b9250828201905080821115612735576127346126d8565b5b92915050565b600082825260208201905092915050565b7f496e76616c696420696e7075742064617461206c656e6774682e000000000000600082015250565b6000612782601a8361273b565b915061278d8261274c565b602082019050919050565b600060208201905081810360008301526127b181612775565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006127f28261227e565b91506127fd8361227e565b92508261280d5761280c6127b8565b5b828206905092915050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026128857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612848565b61288f8683612848565b95508019841693508086168417925050509392505050565b6000819050919050565b60006128cc6128c76128c28461227e565b6128a7565b61227e565b9050919050565b6000819050919050565b6128e6836128b1565b6128fa6128f2826128d3565b848454612855565b825550505050565b600090565b61290f612902565b61291a8184846128dd565b505050565b5b8181101561293e57612933600082612907565b600181019050612920565b5050565b601f8211156129835761295481612823565b61295d84612838565b8101602085101561296c578190505b61298061297885612838565b83018261291f565b50505b505050565b600082821c905092915050565b60006129a660001984600802612988565b1980831691505092915050565b60006129bf8383612995565b9150826002028217905092915050565b6129d98383612818565b67ffffffffffffffff8111156129f2576129f16123c7565b5b6129fc82546126a7565b612a07828285612942565b6000601f831160018114612a365760008415612a24578287013590505b612a2e85826129b3565b865550612a96565b601f198416612a4486612823565b60005b82811015612a6c57848901358255600182019150602085019450602081019050612a47565b86831015612a895784890135612a85601f891682612995565b8355505b6001600288020188555050505b5050505050505056fea26469706673582212204a9cf5efd0682f02ed0d6661486d32a6366e2e8118c3070ee23e44a788b11f4364736f6c63430008130033", } // LoadTesterABI is the input ABI used to generate the binding from. @@ -156,11 +157,11 @@ func NewLoadTesterFilterer(address common.Address, filterer bind.ContractFiltere // bindLoadTester binds a generic wrapper to an already deployed contract. func bindLoadTester(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := abi.JSON(strings.NewReader(LoadTesterABI)) + parsed, err := LoadTesterMetaData.GetAbi() if err != nil { return nil, err } - return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil } // Call invokes the (constant) contract method with params as input values and @@ -284,6 +285,48 @@ func (_LoadTester *LoadTesterTransactorSession) Inc() (*types.Transaction, error return _LoadTester.Contract.Inc(&_LoadTester.TransactOpts) } +// LoopBlockHashUntilLimit is a paid mutator transaction binding the contract method 0xa271b721. +// +// Solidity: function loopBlockHashUntilLimit() returns(uint256) +func (_LoadTester *LoadTesterTransactor) LoopBlockHashUntilLimit(opts *bind.TransactOpts) (*types.Transaction, error) { + return _LoadTester.contract.Transact(opts, "loopBlockHashUntilLimit") +} + +// LoopBlockHashUntilLimit is a paid mutator transaction binding the contract method 0xa271b721. +// +// Solidity: function loopBlockHashUntilLimit() returns(uint256) +func (_LoadTester *LoadTesterSession) LoopBlockHashUntilLimit() (*types.Transaction, error) { + return _LoadTester.Contract.LoopBlockHashUntilLimit(&_LoadTester.TransactOpts) +} + +// LoopBlockHashUntilLimit is a paid mutator transaction binding the contract method 0xa271b721. +// +// Solidity: function loopBlockHashUntilLimit() returns(uint256) +func (_LoadTester *LoadTesterTransactorSession) LoopBlockHashUntilLimit() (*types.Transaction, error) { + return _LoadTester.Contract.LoopBlockHashUntilLimit(&_LoadTester.TransactOpts) +} + +// LoopUntilLimit is a paid mutator transaction binding the contract method 0x659bbb4f. +// +// Solidity: function loopUntilLimit() returns(uint256) +func (_LoadTester *LoadTesterTransactor) LoopUntilLimit(opts *bind.TransactOpts) (*types.Transaction, error) { + return _LoadTester.contract.Transact(opts, "loopUntilLimit") +} + +// LoopUntilLimit is a paid mutator transaction binding the contract method 0x659bbb4f. +// +// Solidity: function loopUntilLimit() returns(uint256) +func (_LoadTester *LoadTesterSession) LoopUntilLimit() (*types.Transaction, error) { + return _LoadTester.Contract.LoopUntilLimit(&_LoadTester.TransactOpts) +} + +// LoopUntilLimit is a paid mutator transaction binding the contract method 0x659bbb4f. +// +// Solidity: function loopUntilLimit() returns(uint256) +func (_LoadTester *LoadTesterTransactorSession) LoopUntilLimit() (*types.Transaction, error) { + return _LoadTester.Contract.LoopUntilLimit(&_LoadTester.TransactOpts) +} + // Store is a paid mutator transaction binding the contract method 0xb374012b. // // Solidity: function store(bytes trash) returns(uint256) @@ -704,6 +747,27 @@ func (_LoadTester *LoadTesterTransactorSession) TestDIV(x *big.Int) (*types.Tran return _LoadTester.Contract.TestDIV(&_LoadTester.TransactOpts, x) } +// TestECRecover is a paid mutator transaction binding the contract method 0xa18683cb. +// +// Solidity: function testECRecover(bytes inputData) returns(address result) +func (_LoadTester *LoadTesterTransactor) TestECRecover(opts *bind.TransactOpts, inputData []byte) (*types.Transaction, error) { + return _LoadTester.contract.Transact(opts, "testECRecover", inputData) +} + +// TestECRecover is a paid mutator transaction binding the contract method 0xa18683cb. +// +// Solidity: function testECRecover(bytes inputData) returns(address result) +func (_LoadTester *LoadTesterSession) TestECRecover(inputData []byte) (*types.Transaction, error) { + return _LoadTester.Contract.TestECRecover(&_LoadTester.TransactOpts, inputData) +} + +// TestECRecover is a paid mutator transaction binding the contract method 0xa18683cb. +// +// Solidity: function testECRecover(bytes inputData) returns(address result) +func (_LoadTester *LoadTesterTransactorSession) TestECRecover(inputData []byte) (*types.Transaction, error) { + return _LoadTester.Contract.TestECRecover(&_LoadTester.TransactOpts, inputData) +} + // TestEQ is a paid mutator transaction binding the contract method 0xe9f9b3f2. // // Solidity: function testEQ(uint256 x) returns(uint256) @@ -1355,6 +1419,27 @@ func (_LoadTester *LoadTesterTransactorSession) TestSGT(x *big.Int) (*types.Tran return _LoadTester.Contract.TestSGT(&_LoadTester.TransactOpts, x) } +// TestSHA256 is a paid mutator transaction binding the contract method 0x63138d4f. +// +// Solidity: function testSHA256(bytes inputData) returns(bytes32 result) +func (_LoadTester *LoadTesterTransactor) TestSHA256(opts *bind.TransactOpts, inputData []byte) (*types.Transaction, error) { + return _LoadTester.contract.Transact(opts, "testSHA256", inputData) +} + +// TestSHA256 is a paid mutator transaction binding the contract method 0x63138d4f. +// +// Solidity: function testSHA256(bytes inputData) returns(bytes32 result) +func (_LoadTester *LoadTesterSession) TestSHA256(inputData []byte) (*types.Transaction, error) { + return _LoadTester.Contract.TestSHA256(&_LoadTester.TransactOpts, inputData) +} + +// TestSHA256 is a paid mutator transaction binding the contract method 0x63138d4f. +// +// Solidity: function testSHA256(bytes inputData) returns(bytes32 result) +func (_LoadTester *LoadTesterTransactorSession) TestSHA256(inputData []byte) (*types.Transaction, error) { + return _LoadTester.Contract.TestSHA256(&_LoadTester.TransactOpts, inputData) +} + // TestSHA3 is a paid mutator transaction binding the contract method 0x19b621d6. // // Solidity: function testSHA3(uint256 x) returns(uint256) diff --git a/contracts/precompiledContracts.go b/contracts/precompiledContracts.go index e431a2f2..dbc2291a 100644 --- a/contracts/precompiledContracts.go +++ b/contracts/precompiledContracts.go @@ -1,16 +1,14 @@ package contracts import ( - "context" "crypto/ecdsa" "fmt" - // "math/rand" + "math/rand" - "github.com/ethereum/go-ethereum" "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" + ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" - "github.com/ethereum/go-ethereum/ethclient" "github.com/rs/zerolog/log" ) @@ -40,78 +38,40 @@ func GenerateSHA256Input() []byte { return paddedInput } -func CallPrecompiledContracts(ctx context.Context, c *ethclient.Client, address int, tops *bind.TransactOpts, iterations uint64, fromAddress common.Address, privateKey *ecdsa.PrivateKey) error { - h := fmt.Sprintf("0x%x", address) - contractPrecompiledAddress := common.HexToAddress(h) +func CallPrecompiledContracts(address int, lt *LoadTester, opts *bind.TransactOpts, iterations uint64, privateKey *ecdsa.PrivateKey) (*ethtypes.Transaction, error) { var inputData []byte switch address { case 1: + log.Trace().Str("method", "TestECRecover").Msg("Executing contract method") inputData = GenerateECRecoverInput(privateKey) + return lt.TestECRecover(opts, inputData) case 2: + log.Trace().Str("method", "TestSHA256").Msg("Executing contract method") inputData = GenerateSHA256Input() - // case 3: - // case 4: - // case 5: - // case 6: - // case 7: - // case 8: - // case 9: - // case 10: - // case 11: - // case 12: - // case 13: - // case 14: - // case 15: - // case 16: - // case 17: - // case 18: - default: - return fmt.Errorf("Unrecognized precompiled address %d", address) + return lt.TestSHA256(opts, inputData) + // case 3: + // case 4: + // case 5: + // case 6: + // case 7: + // case 8: + // case 9: + // case 10: + // case 11: + // case 12: + // case 13: + // case 14: + // case 15: + // case 16: + // case 17: } - // gasPrice - gasPrice, err := c.SuggestGasPrice(ctx) - if err != nil { - return fmt.Errorf("Failed to estimate gasPrice") - } - fmt.Printf("gasPrice: %d\n", gasPrice) - - fmt.Println("fromAddress: ", fromAddress) - // Prepare the call message - callMsg := ethereum.CallMsg{ - From: fromAddress, - To: &contractPrecompiledAddress, - Gas: 10000000, - GasPrice: gasPrice, - Data: inputData, - } - - /** - // Estimate gas - gas, err := c.EstimateGas(ctx, callMsg) - if err != nil { - return fmt.Errorf("Failed to estimate gas") - } - - // Increase the gas limit - tops.GasLimit = gas * 2 - */ - - // Call the precompiled contract - callResult, err := c.CallContract(ctx, callMsg, nil) - if err != nil { - return fmt.Errorf("Failed to call precompiled contract 0x%x", contractPrecompiledAddress) - } - - // Print the result - log.Trace().Str("method", h).Msg("Executing contract method") - fmt.Printf("callResult: 0x%x\n", callResult) - - return nil + return nil, fmt.Errorf("Unrecognized precompiled address %d", address) } func GetRandomPrecompiledContractAddress() int { - return 2 + n := 2 + return rand.Intn(n) + 1 // [1, n + 1) // return rand.Intn(17) + 1 } From 551069cf3e0bb4c03679872273149cea8beffa36 Mon Sep 17 00:00:00 2001 From: Idris Hanafi Date: Thu, 30 Mar 2023 00:37:17 -0400 Subject: [PATCH 3/7] feat: ripemd-160 and identity added --- contracts/LoadTester.abi | 2 +- contracts/LoadTester.bin | 2 +- contracts/LoadTester.sol | 56 +++++++++++++++++++++++++------ contracts/loadtester.go | 46 +++++++++++++++++++++++-- contracts/precompiledContracts.go | 23 +++++++++++-- 5 files changed, 113 insertions(+), 16 deletions(-) diff --git a/contracts/LoadTester.abi b/contracts/LoadTester.abi index 0faf901b..f17c6a49 100644 --- a/contracts/LoadTester.abi +++ b/contracts/LoadTester.abi @@ -1 +1 @@ -[{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"dumpster","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCallCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"loopBlockHashUntilLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"loopUntilLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"trash","type":"bytes"}],"name":"store","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testADD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testADDMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testADDRESS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testAND","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBALANCE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBASEFEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBLOCKHASH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBYTE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLDATACOPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLDATALOAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLDATASIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLVALUE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCHAINID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCODECOPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCODESIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCOINBASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testDIFFICULTY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testDIV","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testECRecover","outputs":[{"internalType":"address","name":"result","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testEQ","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testEXP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testEXTCODESIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGAS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGASLIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGASPRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testISZERO","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG0","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG4","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMLOAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMSIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMSTORE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMSTORE8","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMUL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMULMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testNOT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testNUMBER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testORIGIN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testRETURNDATACOPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testRETURNDATASIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSAR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSDIV","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSELFBALANCE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSGT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testSHA256","outputs":[{"internalType":"bytes32","name":"result","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSHA3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSHL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSHR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSIGNEXTEND","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSLOAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSLT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSSTORE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSUB","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testTIMESTAMP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testXOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file +[{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"dumpster","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCallCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"loopBlockHashUntilLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"loopUntilLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"trash","type":"bytes"}],"name":"store","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testADD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testADDMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testADDRESS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testAND","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBALANCE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBASEFEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBLOCKHASH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBYTE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLDATACOPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLDATALOAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLDATASIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLVALUE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCHAINID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCODECOPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCODESIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCOINBASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testDIFFICULTY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testDIV","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testECRecover","outputs":[{"internalType":"address","name":"result","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testEQ","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testEXP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testEXTCODESIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGAS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGASLIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGASPRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testISZERO","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testIdentity","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG0","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG4","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMLOAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMSIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMSTORE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMSTORE8","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMUL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMULMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testNOT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testNUMBER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testORIGIN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testRETURNDATACOPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testRETURNDATASIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testRipemd160","outputs":[{"internalType":"bytes20","name":"result","type":"bytes20"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSAR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSDIV","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSELFBALANCE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSGT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testSHA256","outputs":[{"internalType":"bytes32","name":"result","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSHA3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSHL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSHR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSIGNEXTEND","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSLOAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSLT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSSTORE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSUB","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testTIMESTAMP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testXOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/contracts/LoadTester.bin b/contracts/LoadTester.bin index 7dedfabd..39b5ed04 100644 --- a/contracts/LoadTester.bin +++ b/contracts/LoadTester.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b50612ad5806100206000396000f3fe608060405234801561001057600080fd5b50600436106104075760003560e01c80637c191d2011610220578063bdc875fc11610130578063d93cd558116100b8578063ea5141e611610087578063ea5141e614610fc4578063f279ca8114610ff4578063f4d1fc6114611024578063f58fc36a14611054578063fde7721c1461108457610407565b8063d93cd55814610f04578063dd9bef6014610f34578063de97a36314610f64578063e9f9b3f214610f9457610407565b8063c4bd65d5116100ff578063c4bd65d514610e14578063ce3cf4ef14610e44578063d117320b14610e74578063d51e7b5b14610ea4578063d53ff3fd14610ed457610407565b8063bdc875fc14610d54578063bf529ca114610d84578063c360aba614610db4578063c420eb6114610de457610407565b8063a18683cb116101b3578063acaebdf611610182578063acaebdf614610c64578063b374012b14610c94578063b3d847f214610cc4578063b7b8620714610cf4578063b81c148414610d2457610407565b8063a18683cb14610bb6578063a271b72114610be6578063a60a108714610c04578063a645c9c214610c3457610407565b8063918a5fcd116101ef578063918a5fcd14610af657806391e7b27714610b2657806398456f3e14610b565780639a2b7c8114610b8657610407565b80637c191d2014610a365780637de8c6f814610a6657806380947f8014610a96578063880eff3914610ac657610407565b80632d34e7981161031b5780634d2c74b3116102ae578063659bbb4f1161027d578063659bbb4f146109585780636e7f1fe7146109765780636f099c8d146109a657806371d91d28146109d65780637b6e0b0e14610a0657610407565b80634d2c74b3146108985780635590c2d9146108c857806360e13cde146108f857806363138d4f1461092857610407565b80633a425dfc116102ea5780633a425dfc146107d857806340fe26621461080857806344cf3bc7146108385780634a61af1f1461086857610407565b80632d34e7981461072a5780633430ec061461075a578063371303c01461078a5780633a411f12146107a857610407565b806318093b461161039e5780632007332e1161036d5780632007332e1461063a578063219cddeb1461066a5780632294fc7f1461069a5780632871ef85146106ca5780632b21ef44146106fa57610407565b806318093b461461057a57806319b621d6146105aa5780631aba07ea146105da5780631de2f3431461060a57610407565b80631287a68c116103da5780631287a68c146104cc578063135d52f7146104ea5780631581cf191461051a578063165821501461054a57610407565b8063034aef711461040c578063050082f81461043c578063087b4e841461046c5780630ba8a73b1461049c575b600080fd5b610426600480360381019061042191906122b4565b6110b4565b60405161043391906122f0565b60405180910390f35b610456600480360381019061045191906122b4565b6110ef565b60405161046391906122f0565b60405180910390f35b610486600480360381019061048191906122b4565b61112a565b60405161049391906122f0565b60405180910390f35b6104b660048036038101906104b191906122b4565b611164565b6040516104c391906122f0565b60405180910390f35b6104d46111a0565b6040516104e191906122f0565b60405180910390f35b61050460048036038101906104ff91906122b4565b6111a9565b60405161051191906122f0565b60405180910390f35b610534600480360381019061052f91906122b4565b6111e5565b60405161054191906122f0565b60405180910390f35b610564600480360381019061055f91906122b4565b611220565b60405161057191906122f0565b60405180910390f35b610594600480360381019061058f91906122b4565b61127b565b6040516105a191906122f0565b60405180910390f35b6105c460048036038101906105bf91906122b4565b6112b9565b6040516105d191906122f0565b60405180910390f35b6105f460048036038101906105ef91906122b4565b611348565b60405161060191906122f0565b60405180910390f35b610624600480360381019061061f91906122b4565b61138e565b60405161063191906122f0565b60405180910390f35b610654600480360381019061064f91906122b4565b6113cc565b60405161066191906122f0565b60405180910390f35b610684600480360381019061067f91906122b4565b611408565b60405161069191906122f0565b60405180910390f35b6106b460048036038101906106af91906122b4565b611443565b6040516106c191906122f0565b60405180910390f35b6106e460048036038101906106df91906122b4565b611482565b6040516106f191906122f0565b60405180910390f35b610714600480360381019061070f91906122b4565b6114bd565b60405161072191906122f0565b60405180910390f35b610744600480360381019061073f91906122b4565b6114f8565b60405161075191906122f0565b60405180910390f35b610774600480360381019061076f91906122b4565b611533565b604051610781919061239b565b60405180910390f35b6107926115df565b60405161079f91906122f0565b60405180910390f35b6107c260048036038101906107bd91906122b4565b6115fe565b6040516107cf91906122f0565b60405180910390f35b6107f260048036038101906107ed91906122b4565b61163a565b6040516107ff91906122f0565b60405180910390f35b610822600480360381019061081d91906122b4565b611676565b60405161082f91906122f0565b60405180910390f35b610852600480360381019061084d91906122b4565b6116b5565b60405161085f91906122f0565b60405180910390f35b610882600480360381019061087d91906122b4565b6116f0565b60405161088f91906122f0565b60405180910390f35b6108b260048036038101906108ad91906122b4565b61172e565b6040516108bf91906122f0565b60405180910390f35b6108e260048036038101906108dd91906122b4565b611769565b6040516108ef91906122f0565b60405180910390f35b610912600480360381019061090d91906122b4565b6117ae565b60405161091f91906122f0565b60405180910390f35b610942600480360381019061093d91906124f2565b6117ea565b60405161094f9190612554565b60405180910390f35b610960611816565b60405161096d91906122f0565b60405180910390f35b610990600480360381019061098b91906122b4565b611852565b60405161099d91906122f0565b60405180910390f35b6109c060048036038101906109bb91906122b4565b611890565b6040516109cd91906122f0565b60405180910390f35b6109f060048036038101906109eb91906122b4565b6118cb565b6040516109fd91906122f0565b60405180910390f35b610a206004803603810190610a1b91906122b4565b611909565b604051610a2d91906122f0565b60405180910390f35b610a506004803603810190610a4b91906122b4565b611945565b604051610a5d91906122f0565b60405180910390f35b610a806004803603810190610a7b91906122b4565b611980565b604051610a8d91906122f0565b60405180910390f35b610ab06004803603810190610aab91906122b4565b6119bc565b604051610abd91906122f0565b60405180910390f35b610ae06004803603810190610adb91906122b4565b611a19565b604051610aed91906122f0565b60405180910390f35b610b106004803603810190610b0b91906122b4565b611a58565b604051610b1d91906122f0565b60405180910390f35b610b406004803603810190610b3b91906122b4565b611a93565b604051610b4d91906122f0565b60405180910390f35b610b706004803603810190610b6b91906122b4565b611adf565b604051610b7d91906122f0565b60405180910390f35b610ba06004803603810190610b9b91906122b4565b611b1f565b604051610bad91906122f0565b60405180910390f35b610bd06004803603810190610bcb91906124f2565b611b5a565b604051610bdd91906125b0565b60405180910390f35b610bee611bdc565b604051610bfb91906122f0565b60405180910390f35b610c1e6004803603810190610c1991906122b4565b611c27565b604051610c2b91906122f0565b60405180910390f35b610c4e6004803603810190610c4991906122b4565b611c62565b604051610c5b91906122f0565b60405180910390f35b610c7e6004803603810190610c7991906122b4565b611c9e565b604051610c8b91906122f0565b60405180910390f35b610cae6004803603810190610ca9919061262b565b611cda565b604051610cbb91906122f0565b60405180910390f35b610cde6004803603810190610cd991906122b4565b611d28565b604051610ceb91906122f0565b60405180910390f35b610d0e6004803603810190610d0991906122b4565b611d63565b604051610d1b91906122f0565b60405180910390f35b610d3e6004803603810190610d3991906122b4565b611d9e565b604051610d4b91906122f0565b60405180910390f35b610d6e6004803603810190610d6991906122b4565b611dd9565b604051610d7b91906122f0565b60405180910390f35b610d9e6004803603810190610d9991906122b4565b611e14565b604051610dab91906122f0565b60405180910390f35b610dce6004803603810190610dc991906122b4565b611e58565b604051610ddb91906122f0565b60405180910390f35b610dfe6004803603810190610df991906122b4565b611e94565b604051610e0b91906122f0565b60405180910390f35b610e2e6004803603810190610e2991906122b4565b611ecf565b604051610e3b91906122f0565b60405180910390f35b610e5e6004803603810190610e5991906122b4565b611f0d565b604051610e6b91906122f0565b60405180910390f35b610e8e6004803603810190610e8991906122b4565b611f4a565b604051610e9b91906122f0565b60405180910390f35b610ebe6004803603810190610eb991906122b4565b611f84565b604051610ecb91906122f0565b60405180910390f35b610eee6004803603810190610ee991906122b4565b611fc0565b604051610efb91906122f0565b60405180910390f35b610f1e6004803603810190610f1991906122b4565b611ffc565b604051610f2b91906122f0565b60405180910390f35b610f4e6004803603810190610f4991906122b4565b612057565b604051610f5b91906122f0565b60405180910390f35b610f7e6004803603810190610f7991906122b4565b612099565b604051610f8b91906122f0565b60405180910390f35b610fae6004803603810190610fa991906122b4565b6120d5565b604051610fbb91906122f0565b60405180910390f35b610fde6004803603810190610fd991906122b4565b612112565b604051610feb91906122f0565b60405180910390f35b61100e600480360381019061100991906122b4565b612154565b60405161101b91906122f0565b60405180910390f35b61103e600480360381019061103991906122b4565b612190565b60405161104b91906122f0565b60405180910390f35b61106e600480360381019061106991906122b4565b6121ce565b60405161107b91906122f0565b60405180910390f35b61109e600480360381019061109991906122b4565b61220d565b6040516110ab91906122f0565b60405180910390f35b60006110be6115df565b50600065deadbeef003690506000805b848110156110e4573691506001810190506110ce565b505080915050919050565b60006110f96115df565b50600065deadbeef003290506000805b8481101561111f57329150600181019050611109565b505080915050919050565b60006111346115df565b50600065deadbeef0052905060005b8381101561115a5781600052600181019050611143565b5080915050919050565b600061116e6115df565b50600065deadbeef0001905060005b838110156111965760008201915060018101905061117d565b5080915050919050565b60008054905090565b60006111b36115df565b50600065deadbeef0017905060005b838110156111db576000821791506001810190506111c2565b5080915050919050565b60006111ef6115df565b50600065deadbeef003490506000805b84811015611215573491506001810190506111ff565b505080915050919050565b600061122a6115df565b50600065deadbeef0006905060005b83811015611271577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82069150600181019050611239565b5080915050919050565b60006112856115df565b50600065deadbeef001390506000805b848110156112ae57600183139150600181019050611295565b505080915050919050565b60006112c36115df565b50600065deadbeef002090507fffffffff000000000000000000000000000000000000000000000000000000006000526000805b8481101561131157600460002091506001810190506112f7565b507f29045a592007d0c246ef02c2223570da9522d0cf0f73282c79a1bc8f0bb2c238811461133e57600091505b5080915050919050565b60006113526115df565b50600065deadbeef00a490508060105260005b83811015611384576004600360028360066010a4600181019050611365565b5080915050919050565b60006113986115df565b50600065deadbeef001a90506000805b848110156113c1578260001a91506001810190506113a8565b505080915050919050565b60006113d66115df565b50600065deadbeef001b905060005b838110156113fe578160001b91506001810190506113e5565b5080915050919050565b60006114126115df565b50600065deadbeef004290506000805b8481101561143857429150600181019050611422565b505080915050919050565b600061144d6115df565b50600065deadbeef0031905060003060005b85811015611476578131925060018101905061145f565b50505080915050919050565b600061148c6115df565b50600065deadbeef004890506000805b848110156114b25748915060018101905061149c565b505080915050919050565b60006114c76115df565b50600065deadbeef003d90506000805b848110156114ed573d91506001810190506114d7565b505080915050919050565b60006115026115df565b50600065deadbeef004390506000805b8481101561152857439150600181019050611512565b505080915050919050565b6002818154811061154357600080fd5b90600052602060002001600091509050805461155e906126a7565b80601f016020809104026020016040519081016040528092919081815260200182805461158a906126a7565b80156115d75780601f106115ac576101008083540402835291602001916115d7565b820191906000526020600020905b8154815290600101906020018083116115ba57829003601f168201915b505050505081565b600060016000546115f09190612707565b600081905550600054905090565b60006116086115df565b50600065deadbeef0004905060005b8381101561163057600182049150600181019050611617565b5080915050919050565b60006116446115df565b50600065deadbeef0037905060005b8381101561166c57602060008037600181019050611653565b5080915050919050565b60006116806115df565b50600065deadbeef00a090508060105260005b838110156116ab5760066010a0600181019050611693565b5080915050919050565b60006116bf6115df565b50600065deadbeef003390506000805b848110156116e5573391506001810190506116cf565b505080915050919050565b60006116fa6115df565b50600065deadbeef0053905060005b838110156117245763deadbeef600052600181019050611709565b5080915050919050565b60006117386115df565b50600065deadbeef003a90506000805b8481101561175e573a9150600181019050611748565b505080915050919050565b60006117736115df565b50600065deadbeef0051905060008160005260005b848110156117a0576000519150600181019050611788565b508091505080915050919050565b60006117b86115df565b50600065deadbeef001d905060005b838110156117e0578160001d91506001810190506117c7565b5080915050919050565b600080600290506020830183518360208183856000885af18061180c57600080fd5b5050505050919050565b60006118206115df565b505b6103e85a111561184a57600180600082825461183e9190612707565b92505081905550611822565b600154905090565b600061185c6115df565b50600065deadbeef001090506000805b848110156118855782600110915060018101905061186c565b505080915050919050565b600061189a6115df565b50600065deadbeef004490506000805b848110156118c0574491506001810190506118aa565b505080915050919050565b60006118d56115df565b50600065deadbeef001190506000805b848110156118fe576001831191506001810190506118e5565b505080915050919050565b60006119136115df565b50600065deadbeef003e905060005b8381101561193b5760206000803e600181019050611922565b5080915050919050565b600061194f6115df565b50600065deadbeef004590506000805b848110156119755745915060018101905061195f565b505080915050919050565b600061198a6115df565b50600065deadbeef0002905060005b838110156119b257600182029150600181019050611999565b5080915050919050565b60006119c66115df565b50600065deadbeef0008905060005b83811015611a0f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000830891506001810190506119d5565b5080915050919050565b6000611a236115df565b50600065deadbeef005490508060005560005b83811015611a4e576000549150600181019050611a36565b5080915050919050565b6000611a626115df565b50600065deadbeef005a90506000805b84811015611a88575a9150600181019050611a72565b505080915050919050565b6000611a9d6115df565b50600065deadbeef0019905060005b83811015611ac35781199150600181019050611aac565b5065deadbeef00198114611ad657801990505b80915050919050565b6000611ae96115df565b50600065deadbeef00a190508060105260005b83811015611b15578060066010a1600181019050611afc565b5080915050919050565b6000611b296115df565b50600065deadbeef0016905060005b83811015611b50578182169150600181019050611b38565b5080915050919050565b60006080825114611ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9790612798565b60405180910390fd5b600060019050602083016020810151601f1a602082015260206040516080836000865af180611bce57600080fd5b604051519350505050919050565b6000611be66115df565b505b6103e85a1115611c1f576001806000828254611c049190612707565b9250508190555043600154611c1991906127e7565b50611be8565b600154905090565b6000611c316115df565b50600065deadbeef004690506000805b84811015611c5757469150600181019050611c41565b505080915050919050565b6000611c6c6115df565b50600065deadbeef0005905060005b83811015611c9457600182059150600181019050611c7b565b5080915050919050565b6000611ca86115df565b50600065deadbeef0039905060005b83811015611cd057602060008039600181019050611cb7565b5080915050919050565b60006002838390918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611d199291906129cf565b50600280549050905092915050565b6000611d326115df565b50600065deadbeef005990506000805b84811015611d5857599150600181019050611d42565b505080915050919050565b6000611d6d6115df565b50600065deadbeef003890506000805b84811015611d9357389150600181019050611d7d565b505080915050919050565b6000611da86115df565b50600065deadbeef004190506000805b84811015611dce57419150600181019050611db8565b505080915050919050565b6000611de36115df565b50600065deadbeef003090506000805b84811015611e0957309150600181019050611df3565b505080915050919050565b6000611e1e6115df565b50600065deadbeef00a390508060105260005b83811015611e4e57600360028260066010a3600181019050611e31565b5080915050919050565b6000611e626115df565b50600065deadbeef000b905060005b83811015611e8a578160200b9150600181019050611e71565b5080915050919050565b6000611e9e6115df565b50600065deadbeef004790506000805b84811015611ec457479150600181019050611eae565b505080915050919050565b6000611ed96115df565b50600065deadbeef001c90506000805b84811015611f02578260001c9250600181019050611ee9565b505080915050919050565b6000611f176115df565b50600065deadbeef003590506000805b84811015611f3f576000359150600181019050611f27565b505080915050919050565b6000611f546115df565b50600065deadbeef0055905060005b83811015611f7a5781600055600181019050611f63565b5080915050919050565b6000611f8e6115df565b50600065deadbeef0018905060005b83811015611fb657600082189150600181019050611f9d565b5080915050919050565b6000611fca6115df565b50600065deadbeef0003905060005b83811015611ff257600082039150600181019050611fd9565b5080915050919050565b60006120066115df565b50600065deadbeef0007905060005b8381101561204d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82079150600181019050612015565b5080915050919050565b60006120616115df565b50600065deadbeef00a290508060105260005b8381101561208f5760028160066010a2600181019050612074565b5080915050919050565b60006120a36115df565b50600065deadbeef000a905060005b838110156120cb576001820a91506001810190506120b2565b5080915050919050565b60006120df6115df565b50600065deadbeef001490506000805b848110156121075782831491506001810190506120ef565b505080915050919050565b600061211c6115df565b50600065deadbeef0040905060006001430360005b858110156121485781409250600181019050612131565b50505080915050919050565b600061215e6115df565b50600065deadbeef001590506000805b84811015612185578215915060018101905061216e565b505080915050919050565b600061219a6115df565b50600065deadbeef001290506000805b848110156121c3578260011291506001810190506121aa565b505080915050919050565b60006121d86115df565b50600065deadbeef003b905060003060005b8581101561220157813b92506001810190506121ea565b50505080915050919050565b60006122176115df565b50600065deadbeef0009905060005b83811015612260577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600183099150600181019050612226565b5080915050919050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6122918161227e565b811461229c57600080fd5b50565b6000813590506122ae81612288565b92915050565b6000602082840312156122ca576122c9612274565b5b60006122d88482850161229f565b91505092915050565b6122ea8161227e565b82525050565b600060208201905061230560008301846122e1565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561234557808201518184015260208101905061232a565b60008484015250505050565b6000601f19601f8301169050919050565b600061236d8261230b565b6123778185612316565b9350612387818560208601612327565b61239081612351565b840191505092915050565b600060208201905081810360008301526123b58184612362565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6123ff82612351565b810181811067ffffffffffffffff8211171561241e5761241d6123c7565b5b80604052505050565b600061243161226a565b905061243d82826123f6565b919050565b600067ffffffffffffffff82111561245d5761245c6123c7565b5b61246682612351565b9050602081019050919050565b82818337600083830152505050565b600061249561249084612442565b612427565b9050828152602081018484840111156124b1576124b06123c2565b5b6124bc848285612473565b509392505050565b600082601f8301126124d9576124d86123bd565b5b81356124e9848260208601612482565b91505092915050565b60006020828403121561250857612507612274565b5b600082013567ffffffffffffffff81111561252657612525612279565b5b612532848285016124c4565b91505092915050565b6000819050919050565b61254e8161253b565b82525050565b60006020820190506125696000830184612545565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061259a8261256f565b9050919050565b6125aa8161258f565b82525050565b60006020820190506125c560008301846125a1565b92915050565b600080fd5b600080fd5b60008083601f8401126125eb576125ea6123bd565b5b8235905067ffffffffffffffff811115612608576126076125cb565b5b602083019150836001820283011115612624576126236125d0565b5b9250929050565b6000806020838503121561264257612641612274565b5b600083013567ffffffffffffffff8111156126605761265f612279565b5b61266c858286016125d5565b92509250509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806126bf57607f821691505b6020821081036126d2576126d1612678565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006127128261227e565b915061271d8361227e565b9250828201905080821115612735576127346126d8565b5b92915050565b600082825260208201905092915050565b7f496e76616c696420696e7075742064617461206c656e6774682e000000000000600082015250565b6000612782601a8361273b565b915061278d8261274c565b602082019050919050565b600060208201905081810360008301526127b181612775565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006127f28261227e565b91506127fd8361227e565b92508261280d5761280c6127b8565b5b828206905092915050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026128857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612848565b61288f8683612848565b95508019841693508086168417925050509392505050565b6000819050919050565b60006128cc6128c76128c28461227e565b6128a7565b61227e565b9050919050565b6000819050919050565b6128e6836128b1565b6128fa6128f2826128d3565b848454612855565b825550505050565b600090565b61290f612902565b61291a8184846128dd565b505050565b5b8181101561293e57612933600082612907565b600181019050612920565b5050565b601f8211156129835761295481612823565b61295d84612838565b8101602085101561296c578190505b61298061297885612838565b83018261291f565b50505b505050565b600082821c905092915050565b60006129a660001984600802612988565b1980831691505092915050565b60006129bf8383612995565b9150826002028217905092915050565b6129d98383612818565b67ffffffffffffffff8111156129f2576129f16123c7565b5b6129fc82546126a7565b612a07828285612942565b6000601f831160018114612a365760008415612a24578287013590505b612a2e85826129b3565b865550612a96565b601f198416612a4486612823565b60005b82811015612a6c57848901358255600182019150602085019450602081019050612a47565b86831015612a895784890135612a85601f891682612995565b8355505b6001600288020188555050505b5050505050505056fea26469706673582212204a9cf5efd0682f02ed0d6661486d32a6366e2e8118c3070ee23e44a788b11f4364736f6c63430008130033 \ No newline at end of file +608060405234801561001057600080fd5b50612c04806100206000396000f3fe608060405234801561001057600080fd5b506004361061041d5760003560e01c80637de8c6f81161022b578063bf529ca111610130578063dd9bef60116100b8578063f279ca8111610087578063f279ca811461103a578063f4d1fc611461106a578063f58fc36a1461109a578063f6b0bbf7146110ca578063fde7721c146110fa5761041d565b8063dd9bef6014610f7a578063de97a36314610faa578063e9f9b3f214610fda578063ea5141e61461100a5761041d565b8063ce3cf4ef116100ff578063ce3cf4ef14610e8a578063d117320b14610eba578063d51e7b5b14610eea578063d53ff3fd14610f1a578063d93cd55814610f4a5761041d565b8063bf529ca114610dca578063c360aba614610dfa578063c420eb6114610e2a578063c4bd65d514610e5a5761041d565b8063a271b721116101b3578063b374012b11610182578063b374012b14610cda578063b3d847f214610d0a578063b7b8620714610d3a578063b81c148414610d6a578063bdc875fc14610d9a5761041d565b8063a271b72114610c2c578063a60a108714610c4a578063a645c9c214610c7a578063acaebdf614610caa5761041d565b806391e7b277116101fa57806391e7b27714610b3c57806398456f3e14610b6c5780639a2b7c8114610b9c5780639cce7cf914610bcc578063a18683cb14610bfc5761041d565b80637de8c6f814610a7c57806380947f8014610aac578063880eff3914610adc578063918a5fcd14610b0c5761041d565b80632d34e798116103315780635590c2d9116102b95780636e7f1fe7116102885780636e7f1fe71461098c5780636f099c8d146109bc57806371d91d28146109ec5780637b6e0b0e14610a1c5780637c191d2014610a4c5761041d565b80635590c2d9146108de57806360e13cde1461090e57806363138d4f1461093e578063659bbb4f1461096e5761041d565b80633a425dfc116103005780633a425dfc146107ee57806340fe26621461081e57806344cf3bc71461084e5780634a61af1f1461087e5780634d2c74b3146108ae5761041d565b80632d34e798146107405780633430ec0614610770578063371303c0146107a05780633a411f12146107be5761041d565b806318093b46116103b45780632007332e116103835780632007332e14610650578063219cddeb146106805780632294fc7f146106b05780632871ef85146106e05780632b21ef44146107105761041d565b806318093b461461059057806319b621d6146105c05780631aba07ea146105f05780631de2f343146106205761041d565b80631287a68c116103f05780631287a68c146104e2578063135d52f7146105005780631581cf191461053057806316582150146105605761041d565b8063034aef7114610422578063050082f814610452578063087b4e84146104825780630ba8a73b146104b2575b600080fd5b61043c6004803603810190610437919061238d565b61112a565b60405161044991906123c9565b60405180910390f35b61046c6004803603810190610467919061238d565b611165565b60405161047991906123c9565b60405180910390f35b61049c6004803603810190610497919061238d565b6111a0565b6040516104a991906123c9565b60405180910390f35b6104cc60048036038101906104c7919061238d565b6111da565b6040516104d991906123c9565b60405180910390f35b6104ea611216565b6040516104f791906123c9565b60405180910390f35b61051a6004803603810190610515919061238d565b61121f565b60405161052791906123c9565b60405180910390f35b61054a6004803603810190610545919061238d565b61125b565b60405161055791906123c9565b60405180910390f35b61057a6004803603810190610575919061238d565b611296565b60405161058791906123c9565b60405180910390f35b6105aa60048036038101906105a5919061238d565b6112f1565b6040516105b791906123c9565b60405180910390f35b6105da60048036038101906105d5919061238d565b61132f565b6040516105e791906123c9565b60405180910390f35b61060a6004803603810190610605919061238d565b6113be565b60405161061791906123c9565b60405180910390f35b61063a6004803603810190610635919061238d565b611404565b60405161064791906123c9565b60405180910390f35b61066a6004803603810190610665919061238d565b611442565b60405161067791906123c9565b60405180910390f35b61069a6004803603810190610695919061238d565b61147e565b6040516106a791906123c9565b60405180910390f35b6106ca60048036038101906106c5919061238d565b6114b9565b6040516106d791906123c9565b60405180910390f35b6106fa60048036038101906106f5919061238d565b6114f8565b60405161070791906123c9565b60405180910390f35b61072a6004803603810190610725919061238d565b611533565b60405161073791906123c9565b60405180910390f35b61075a6004803603810190610755919061238d565b61156e565b60405161076791906123c9565b60405180910390f35b61078a6004803603810190610785919061238d565b6115a9565b6040516107979190612474565b60405180910390f35b6107a8611655565b6040516107b591906123c9565b60405180910390f35b6107d860048036038101906107d3919061238d565b611674565b6040516107e591906123c9565b60405180910390f35b6108086004803603810190610803919061238d565b6116b0565b60405161081591906123c9565b60405180910390f35b6108386004803603810190610833919061238d565b6116ec565b60405161084591906123c9565b60405180910390f35b6108686004803603810190610863919061238d565b61172b565b60405161087591906123c9565b60405180910390f35b6108986004803603810190610893919061238d565b611766565b6040516108a591906123c9565b60405180910390f35b6108c860048036038101906108c3919061238d565b6117a4565b6040516108d591906123c9565b60405180910390f35b6108f860048036038101906108f3919061238d565b6117df565b60405161090591906123c9565b60405180910390f35b6109286004803603810190610923919061238d565b611824565b60405161093591906123c9565b60405180910390f35b610958600480360381019061095391906125cb565b611860565b604051610965919061262d565b60405180910390f35b61097661188c565b60405161098391906123c9565b60405180910390f35b6109a660048036038101906109a1919061238d565b6118c8565b6040516109b391906123c9565b60405180910390f35b6109d660048036038101906109d1919061238d565b611906565b6040516109e391906123c9565b60405180910390f35b610a066004803603810190610a01919061238d565b611941565b604051610a1391906123c9565b60405180910390f35b610a366004803603810190610a31919061238d565b61197f565b604051610a4391906123c9565b60405180910390f35b610a666004803603810190610a61919061238d565b6119bb565b604051610a7391906123c9565b60405180910390f35b610a966004803603810190610a91919061238d565b6119f6565b604051610aa391906123c9565b60405180910390f35b610ac66004803603810190610ac1919061238d565b611a32565b604051610ad391906123c9565b60405180910390f35b610af66004803603810190610af1919061238d565b611a8f565b604051610b0391906123c9565b60405180910390f35b610b266004803603810190610b21919061238d565b611ace565b604051610b3391906123c9565b60405180910390f35b610b566004803603810190610b51919061238d565b611b09565b604051610b6391906123c9565b60405180910390f35b610b866004803603810190610b81919061238d565b611b55565b604051610b9391906123c9565b60405180910390f35b610bb66004803603810190610bb1919061238d565b611b95565b604051610bc391906123c9565b60405180910390f35b610be66004803603810190610be191906125cb565b611bd0565b604051610bf39190612474565b60405180910390f35b610c166004803603810190610c1191906125cb565b611c01565b604051610c239190612689565b60405180910390f35b610c34611c83565b604051610c4191906123c9565b60405180910390f35b610c646004803603810190610c5f919061238d565b611cce565b604051610c7191906123c9565b60405180910390f35b610c946004803603810190610c8f919061238d565b611d09565b604051610ca191906123c9565b60405180910390f35b610cc46004803603810190610cbf919061238d565b611d45565b604051610cd191906123c9565b60405180910390f35b610cf46004803603810190610cef9190612704565b611d81565b604051610d0191906123c9565b60405180910390f35b610d246004803603810190610d1f919061238d565b611dcf565b604051610d3191906123c9565b60405180910390f35b610d546004803603810190610d4f919061238d565b611e0a565b604051610d6191906123c9565b60405180910390f35b610d846004803603810190610d7f919061238d565b611e45565b604051610d9191906123c9565b60405180910390f35b610db46004803603810190610daf919061238d565b611e80565b604051610dc191906123c9565b60405180910390f35b610de46004803603810190610ddf919061238d565b611ebb565b604051610df191906123c9565b60405180910390f35b610e146004803603810190610e0f919061238d565b611eff565b604051610e2191906123c9565b60405180910390f35b610e446004803603810190610e3f919061238d565b611f3b565b604051610e5191906123c9565b60405180910390f35b610e746004803603810190610e6f919061238d565b611f76565b604051610e8191906123c9565b60405180910390f35b610ea46004803603810190610e9f919061238d565b611fb4565b604051610eb191906123c9565b60405180910390f35b610ed46004803603810190610ecf919061238d565b611ff1565b604051610ee191906123c9565b60405180910390f35b610f046004803603810190610eff919061238d565b61202b565b604051610f1191906123c9565b60405180910390f35b610f346004803603810190610f2f919061238d565b612067565b604051610f4191906123c9565b60405180910390f35b610f646004803603810190610f5f919061238d565b6120a3565b604051610f7191906123c9565b60405180910390f35b610f946004803603810190610f8f919061238d565b6120fe565b604051610fa191906123c9565b60405180910390f35b610fc46004803603810190610fbf919061238d565b612140565b604051610fd191906123c9565b60405180910390f35b610ff46004803603810190610fef919061238d565b61217c565b60405161100191906123c9565b60405180910390f35b611024600480360381019061101f919061238d565b6121b9565b60405161103191906123c9565b60405180910390f35b611054600480360381019061104f919061238d565b6121fb565b60405161106191906123c9565b60405180910390f35b611084600480360381019061107f919061238d565b612237565b60405161109191906123c9565b60405180910390f35b6110b460048036038101906110af919061238d565b612275565b6040516110c191906123c9565b60405180910390f35b6110e460048036038101906110df91906125cb565b6122b4565b6040516110f1919061278c565b60405180910390f35b611114600480360381019061110f919061238d565b6122e6565b60405161112191906123c9565b60405180910390f35b6000611134611655565b50600065deadbeef003690506000805b8481101561115a57369150600181019050611144565b505080915050919050565b600061116f611655565b50600065deadbeef003290506000805b848110156111955732915060018101905061117f565b505080915050919050565b60006111aa611655565b50600065deadbeef0052905060005b838110156111d057816000526001810190506111b9565b5080915050919050565b60006111e4611655565b50600065deadbeef0001905060005b8381101561120c576000820191506001810190506111f3565b5080915050919050565b60008054905090565b6000611229611655565b50600065deadbeef0017905060005b8381101561125157600082179150600181019050611238565b5080915050919050565b6000611265611655565b50600065deadbeef003490506000805b8481101561128b57349150600181019050611275565b505080915050919050565b60006112a0611655565b50600065deadbeef0006905060005b838110156112e7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820691506001810190506112af565b5080915050919050565b60006112fb611655565b50600065deadbeef001390506000805b848110156113245760018313915060018101905061130b565b505080915050919050565b6000611339611655565b50600065deadbeef002090507fffffffff000000000000000000000000000000000000000000000000000000006000526000805b84811015611387576004600020915060018101905061136d565b507f29045a592007d0c246ef02c2223570da9522d0cf0f73282c79a1bc8f0bb2c23881146113b457600091505b5080915050919050565b60006113c8611655565b50600065deadbeef00a490508060105260005b838110156113fa576004600360028360066010a46001810190506113db565b5080915050919050565b600061140e611655565b50600065deadbeef001a90506000805b84811015611437578260001a915060018101905061141e565b505080915050919050565b600061144c611655565b50600065deadbeef001b905060005b83811015611474578160001b915060018101905061145b565b5080915050919050565b6000611488611655565b50600065deadbeef004290506000805b848110156114ae57429150600181019050611498565b505080915050919050565b60006114c3611655565b50600065deadbeef0031905060003060005b858110156114ec57813192506001810190506114d5565b50505080915050919050565b6000611502611655565b50600065deadbeef004890506000805b8481101561152857489150600181019050611512565b505080915050919050565b600061153d611655565b50600065deadbeef003d90506000805b84811015611563573d915060018101905061154d565b505080915050919050565b6000611578611655565b50600065deadbeef004390506000805b8481101561159e57439150600181019050611588565b505080915050919050565b600281815481106115b957600080fd5b9060005260206000200160009150905080546115d4906127d6565b80601f0160208091040260200160405190810160405280929190818152602001828054611600906127d6565b801561164d5780601f106116225761010080835404028352916020019161164d565b820191906000526020600020905b81548152906001019060200180831161163057829003601f168201915b505050505081565b600060016000546116669190612836565b600081905550600054905090565b600061167e611655565b50600065deadbeef0004905060005b838110156116a65760018204915060018101905061168d565b5080915050919050565b60006116ba611655565b50600065deadbeef0037905060005b838110156116e2576020600080376001810190506116c9565b5080915050919050565b60006116f6611655565b50600065deadbeef00a090508060105260005b838110156117215760066010a0600181019050611709565b5080915050919050565b6000611735611655565b50600065deadbeef003390506000805b8481101561175b57339150600181019050611745565b505080915050919050565b6000611770611655565b50600065deadbeef0053905060005b8381101561179a5763deadbeef60005260018101905061177f565b5080915050919050565b60006117ae611655565b50600065deadbeef003a90506000805b848110156117d4573a91506001810190506117be565b505080915050919050565b60006117e9611655565b50600065deadbeef0051905060008160005260005b848110156118165760005191506001810190506117fe565b508091505080915050919050565b600061182e611655565b50600065deadbeef001d905060005b83811015611856578160001d915060018101905061183d565b5080915050919050565b600080600290506020830183518360208183856000885af18061188257600080fd5b5050505050919050565b6000611896611655565b505b6103e85a11156118c05760018060008282546118b49190612836565b92505081905550611898565b600154905090565b60006118d2611655565b50600065deadbeef001090506000805b848110156118fb578260011091506001810190506118e2565b505080915050919050565b6000611910611655565b50600065deadbeef004490506000805b8481101561193657449150600181019050611920565b505080915050919050565b600061194b611655565b50600065deadbeef001190506000805b848110156119745760018311915060018101905061195b565b505080915050919050565b6000611989611655565b50600065deadbeef003e905060005b838110156119b15760206000803e600181019050611998565b5080915050919050565b60006119c5611655565b50600065deadbeef004590506000805b848110156119eb574591506001810190506119d5565b505080915050919050565b6000611a00611655565b50600065deadbeef0002905060005b83811015611a2857600182029150600181019050611a0f565b5080915050919050565b6000611a3c611655565b50600065deadbeef0008905060005b83811015611a85577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600083089150600181019050611a4b565b5080915050919050565b6000611a99611655565b50600065deadbeef005490508060005560005b83811015611ac4576000549150600181019050611aac565b5080915050919050565b6000611ad8611655565b50600065deadbeef005a90506000805b84811015611afe575a9150600181019050611ae8565b505080915050919050565b6000611b13611655565b50600065deadbeef0019905060005b83811015611b395781199150600181019050611b22565b5065deadbeef00198114611b4c57801990505b80915050919050565b6000611b5f611655565b50600065deadbeef00a190508060105260005b83811015611b8b578060066010a1600181019050611b72565b5080915050919050565b6000611b9f611655565b50600065deadbeef0016905060005b83811015611bc6578182169150600181019050611bae565b5080915050919050565b6060600060049050602083018351604051818183856000885af180611bf457600080fd5b8195505050505050919050565b60006080825114611c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3e906128c7565b60405180910390fd5b600060019050602083016020810151601f1a602082015260206040516080836000865af180611c7557600080fd5b604051519350505050919050565b6000611c8d611655565b505b6103e85a1115611cc6576001806000828254611cab9190612836565b9250508190555043600154611cc09190612916565b50611c8f565b600154905090565b6000611cd8611655565b50600065deadbeef004690506000805b84811015611cfe57469150600181019050611ce8565b505080915050919050565b6000611d13611655565b50600065deadbeef0005905060005b83811015611d3b57600182059150600181019050611d22565b5080915050919050565b6000611d4f611655565b50600065deadbeef0039905060005b83811015611d7757602060008039600181019050611d5e565b5080915050919050565b60006002838390918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611dc0929190612afe565b50600280549050905092915050565b6000611dd9611655565b50600065deadbeef005990506000805b84811015611dff57599150600181019050611de9565b505080915050919050565b6000611e14611655565b50600065deadbeef003890506000805b84811015611e3a57389150600181019050611e24565b505080915050919050565b6000611e4f611655565b50600065deadbeef004190506000805b84811015611e7557419150600181019050611e5f565b505080915050919050565b6000611e8a611655565b50600065deadbeef003090506000805b84811015611eb057309150600181019050611e9a565b505080915050919050565b6000611ec5611655565b50600065deadbeef00a390508060105260005b83811015611ef557600360028260066010a3600181019050611ed8565b5080915050919050565b6000611f09611655565b50600065deadbeef000b905060005b83811015611f31578160200b9150600181019050611f18565b5080915050919050565b6000611f45611655565b50600065deadbeef004790506000805b84811015611f6b57479150600181019050611f55565b505080915050919050565b6000611f80611655565b50600065deadbeef001c90506000805b84811015611fa9578260001c9250600181019050611f90565b505080915050919050565b6000611fbe611655565b50600065deadbeef003590506000805b84811015611fe6576000359150600181019050611fce565b505080915050919050565b6000611ffb611655565b50600065deadbeef0055905060005b83811015612021578160005560018101905061200a565b5080915050919050565b6000612035611655565b50600065deadbeef0018905060005b8381101561205d57600082189150600181019050612044565b5080915050919050565b6000612071611655565b50600065deadbeef0003905060005b8381101561209957600082039150600181019050612080565b5080915050919050565b60006120ad611655565b50600065deadbeef0007905060005b838110156120f4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820791506001810190506120bc565b5080915050919050565b6000612108611655565b50600065deadbeef00a290508060105260005b838110156121365760028160066010a260018101905061211b565b5080915050919050565b600061214a611655565b50600065deadbeef000a905060005b83811015612172576001820a9150600181019050612159565b5080915050919050565b6000612186611655565b50600065deadbeef001490506000805b848110156121ae578283149150600181019050612196565b505080915050919050565b60006121c3611655565b50600065deadbeef0040905060006001430360005b858110156121ef57814092506001810190506121d8565b50505080915050919050565b6000612205611655565b50600065deadbeef001590506000805b8481101561222c5782159150600181019050612215565b505080915050919050565b6000612241611655565b50600065deadbeef001290506000805b8481101561226a57826001129150600181019050612251565b505080915050919050565b600061227f611655565b50600065deadbeef003b905060003060005b858110156122a857813b9250600181019050612291565b50505080915050919050565b6000806003905060208301835160405160148183856000885af1806122d857600080fd5b815195505050505050919050565b60006122f0611655565b50600065deadbeef0009905060005b83811015612339577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001830991506001810190506122ff565b5080915050919050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61236a81612357565b811461237557600080fd5b50565b60008135905061238781612361565b92915050565b6000602082840312156123a3576123a261234d565b5b60006123b184828501612378565b91505092915050565b6123c381612357565b82525050565b60006020820190506123de60008301846123ba565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561241e578082015181840152602081019050612403565b60008484015250505050565b6000601f19601f8301169050919050565b6000612446826123e4565b61245081856123ef565b9350612460818560208601612400565b6124698161242a565b840191505092915050565b6000602082019050818103600083015261248e818461243b565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6124d88261242a565b810181811067ffffffffffffffff821117156124f7576124f66124a0565b5b80604052505050565b600061250a612343565b905061251682826124cf565b919050565b600067ffffffffffffffff821115612536576125356124a0565b5b61253f8261242a565b9050602081019050919050565b82818337600083830152505050565b600061256e6125698461251b565b612500565b90508281526020810184848401111561258a5761258961249b565b5b61259584828561254c565b509392505050565b600082601f8301126125b2576125b1612496565b5b81356125c284826020860161255b565b91505092915050565b6000602082840312156125e1576125e061234d565b5b600082013567ffffffffffffffff8111156125ff576125fe612352565b5b61260b8482850161259d565b91505092915050565b6000819050919050565b61262781612614565b82525050565b6000602082019050612642600083018461261e565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061267382612648565b9050919050565b61268381612668565b82525050565b600060208201905061269e600083018461267a565b92915050565b600080fd5b600080fd5b60008083601f8401126126c4576126c3612496565b5b8235905067ffffffffffffffff8111156126e1576126e06126a4565b5b6020830191508360018202830111156126fd576126fc6126a9565b5b9250929050565b6000806020838503121561271b5761271a61234d565b5b600083013567ffffffffffffffff81111561273957612738612352565b5b612745858286016126ae565b92509250509250929050565b60007fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b61278681612751565b82525050565b60006020820190506127a1600083018461277d565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806127ee57607f821691505b602082108103612801576128006127a7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061284182612357565b915061284c83612357565b925082820190508082111561286457612863612807565b5b92915050565b600082825260208201905092915050565b7f496e76616c696420696e7075742064617461206c656e6774682e000000000000600082015250565b60006128b1601a8361286a565b91506128bc8261287b565b602082019050919050565b600060208201905081810360008301526128e0816128a4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061292182612357565b915061292c83612357565b92508261293c5761293b6128e7565b5b828206905092915050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026129b47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612977565b6129be8683612977565b95508019841693508086168417925050509392505050565b6000819050919050565b60006129fb6129f66129f184612357565b6129d6565b612357565b9050919050565b6000819050919050565b612a15836129e0565b612a29612a2182612a02565b848454612984565b825550505050565b600090565b612a3e612a31565b612a49818484612a0c565b505050565b5b81811015612a6d57612a62600082612a36565b600181019050612a4f565b5050565b601f821115612ab257612a8381612952565b612a8c84612967565b81016020851015612a9b578190505b612aaf612aa785612967565b830182612a4e565b50505b505050565b600082821c905092915050565b6000612ad560001984600802612ab7565b1980831691505092915050565b6000612aee8383612ac4565b9150826002028217905092915050565b612b088383612947565b67ffffffffffffffff811115612b2157612b206124a0565b5b612b2b82546127d6565b612b36828285612a71565b6000601f831160018114612b655760008415612b53578287013590505b612b5d8582612ae2565b865550612bc5565b601f198416612b7386612952565b60005b82811015612b9b57848901358255600182019150602085019450602081019050612b76565b86831015612bb85784890135612bb4601f891682612ac4565b8355505b6001600288020188555050505b5050505050505056fea2646970667358221220224f9cc55b756f70a556b24e75bc7fbd949d95f68d437b6b711c6f3d23cea5b564736f6c63430008130033 \ No newline at end of file diff --git a/contracts/LoadTester.sol b/contracts/LoadTester.sol index 3e46fa22..7aa242f8 100644 --- a/contracts/LoadTester.sol +++ b/contracts/LoadTester.sol @@ -772,11 +772,32 @@ contract LoadTester { } // Precompiled Contracts + function testECRecover(bytes memory inputData) public returns (address result) { + require(inputData.length == 128, "Invalid input data length."); + + address EC_RECOVER_PRECOMPILED_CONTRACT = 0x0000000000000000000000000000000000000001; + + assembly { + let inputPtr := add(inputData, 0x20) // Ignore the length prefix of the inputData bytes array + + // Set the correct 1-byte v value from the 32-byte v component + mstore(add(inputPtr, 0x20), byte(31, mload(add(inputPtr, 0x20)))) + + let success := call(gas(), EC_RECOVER_PRECOMPILED_CONTRACT, 0, inputPtr, 0x80, mload(0x40), 0x20) + if iszero(success) { + revert(0, 0) + } + + // Load the result from the memory + result := mload(mload(0x40)) + } + } + function testSHA256(bytes memory inputData) public returns (bytes32 result) { address SHA256_PRECOMPILED_CONTRACT = 0x0000000000000000000000000000000000000002; assembly { - let inputPtr := add(inputData, 0x20) + let inputPtr := add(inputData, 0x20) // Ignore the length prefix of the inputData bytes array let inputLength := mload(inputData) let outputPtr := result let success := call(gas(), SHA256_PRECOMPILED_CONTRACT, 0, inputPtr, inputLength, outputPtr, 0x20) @@ -786,24 +807,39 @@ contract LoadTester { } } - function testECRecover(bytes memory inputData) public returns (address result) { - require(inputData.length == 128, "Invalid input data length."); + function testRipemd160(bytes memory inputData) public returns (bytes20 result) { + address RIPEMD160_PRECOMPILED_CONTRACT = 0x0000000000000000000000000000000000000003; - address EC_RECOVER_PRECOMPILED_CONTRACT = 0x0000000000000000000000000000000000000001; + assembly { + let inputPtr := add(inputData, 0x20) // Ignore the length prefix of the inputData bytes array + let inputLength := mload(inputData) // Load the length of the inputData + + let outputPtr := mload(0x40) + + let success := call(gas(), RIPEMD160_PRECOMPILED_CONTRACT, 0, inputPtr, inputLength, outputPtr, 0x14) + if iszero(success) { + revert(0, 0) + } + + result := mload(outputPtr) + } + } + + function testIdentity(bytes memory inputData) public returns (bytes memory result) { + address IDENTITY_PRECOMPILED_CONTRACT = 0x0000000000000000000000000000000000000004; assembly { - let inputPtr := add(inputData, 0x20) // Skip the length prefix of the inputData bytes array + let inputPtr := add(inputData, 0x20) // Ignore the length prefix of the inputData bytes array + let inputLength := mload(inputData) - // Set the correct 1-byte v value from the 32-byte v component - mstore(add(inputPtr, 0x20), byte(31, mload(add(inputPtr, 0x20)))) + let outputPtr := mload(0x40) - let success := call(gas(), EC_RECOVER_PRECOMPILED_CONTRACT, 0, inputPtr, 0x80, mload(0x40), 0x20) + let success := call(gas(), IDENTITY_PRECOMPILED_CONTRACT, 0, inputPtr, inputLength, outputPtr, inputLength) if iszero(success) { revert(0, 0) } - // Load the result from the memory - result := mload(mload(0x40)) + result := outputPtr } } } diff --git a/contracts/loadtester.go b/contracts/loadtester.go index 066c806c..8c4a7dad 100644 --- a/contracts/loadtester.go +++ b/contracts/loadtester.go @@ -31,8 +31,8 @@ var ( // LoadTesterMetaData contains all meta data concerning the LoadTester contract. var LoadTesterMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"dumpster\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCallCounter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inc\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"loopBlockHashUntilLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"loopUntilLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"trash\",\"type\":\"bytes\"}],\"name\":\"store\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testADD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testADDMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testADDRESS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testAND\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBALANCE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBASEFEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBLOCKHASH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBYTE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLDATACOPY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLDATALOAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLDATASIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLER\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLVALUE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCHAINID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCODECOPY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCODESIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCOINBASE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testDIFFICULTY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testDIV\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testECRecover\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"result\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testEQ\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testEXP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testEXTCODESIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGASLIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGASPRICE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testISZERO\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG0\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG3\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG4\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMLOAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMSIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMSTORE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMSTORE8\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMUL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMULMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testNOT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testNUMBER\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testORIGIN\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testRETURNDATACOPY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testRETURNDATASIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSAR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSDIV\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSELFBALANCE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSGT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testSHA256\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"result\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSHA3\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSHL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSHR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSIGNEXTEND\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSLOAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSLT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSSTORE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSUB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testTIMESTAMP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testXOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b50612ad5806100206000396000f3fe608060405234801561001057600080fd5b50600436106104075760003560e01c80637c191d2011610220578063bdc875fc11610130578063d93cd558116100b8578063ea5141e611610087578063ea5141e614610fc4578063f279ca8114610ff4578063f4d1fc6114611024578063f58fc36a14611054578063fde7721c1461108457610407565b8063d93cd55814610f04578063dd9bef6014610f34578063de97a36314610f64578063e9f9b3f214610f9457610407565b8063c4bd65d5116100ff578063c4bd65d514610e14578063ce3cf4ef14610e44578063d117320b14610e74578063d51e7b5b14610ea4578063d53ff3fd14610ed457610407565b8063bdc875fc14610d54578063bf529ca114610d84578063c360aba614610db4578063c420eb6114610de457610407565b8063a18683cb116101b3578063acaebdf611610182578063acaebdf614610c64578063b374012b14610c94578063b3d847f214610cc4578063b7b8620714610cf4578063b81c148414610d2457610407565b8063a18683cb14610bb6578063a271b72114610be6578063a60a108714610c04578063a645c9c214610c3457610407565b8063918a5fcd116101ef578063918a5fcd14610af657806391e7b27714610b2657806398456f3e14610b565780639a2b7c8114610b8657610407565b80637c191d2014610a365780637de8c6f814610a6657806380947f8014610a96578063880eff3914610ac657610407565b80632d34e7981161031b5780634d2c74b3116102ae578063659bbb4f1161027d578063659bbb4f146109585780636e7f1fe7146109765780636f099c8d146109a657806371d91d28146109d65780637b6e0b0e14610a0657610407565b80634d2c74b3146108985780635590c2d9146108c857806360e13cde146108f857806363138d4f1461092857610407565b80633a425dfc116102ea5780633a425dfc146107d857806340fe26621461080857806344cf3bc7146108385780634a61af1f1461086857610407565b80632d34e7981461072a5780633430ec061461075a578063371303c01461078a5780633a411f12146107a857610407565b806318093b461161039e5780632007332e1161036d5780632007332e1461063a578063219cddeb1461066a5780632294fc7f1461069a5780632871ef85146106ca5780632b21ef44146106fa57610407565b806318093b461461057a57806319b621d6146105aa5780631aba07ea146105da5780631de2f3431461060a57610407565b80631287a68c116103da5780631287a68c146104cc578063135d52f7146104ea5780631581cf191461051a578063165821501461054a57610407565b8063034aef711461040c578063050082f81461043c578063087b4e841461046c5780630ba8a73b1461049c575b600080fd5b610426600480360381019061042191906122b4565b6110b4565b60405161043391906122f0565b60405180910390f35b610456600480360381019061045191906122b4565b6110ef565b60405161046391906122f0565b60405180910390f35b610486600480360381019061048191906122b4565b61112a565b60405161049391906122f0565b60405180910390f35b6104b660048036038101906104b191906122b4565b611164565b6040516104c391906122f0565b60405180910390f35b6104d46111a0565b6040516104e191906122f0565b60405180910390f35b61050460048036038101906104ff91906122b4565b6111a9565b60405161051191906122f0565b60405180910390f35b610534600480360381019061052f91906122b4565b6111e5565b60405161054191906122f0565b60405180910390f35b610564600480360381019061055f91906122b4565b611220565b60405161057191906122f0565b60405180910390f35b610594600480360381019061058f91906122b4565b61127b565b6040516105a191906122f0565b60405180910390f35b6105c460048036038101906105bf91906122b4565b6112b9565b6040516105d191906122f0565b60405180910390f35b6105f460048036038101906105ef91906122b4565b611348565b60405161060191906122f0565b60405180910390f35b610624600480360381019061061f91906122b4565b61138e565b60405161063191906122f0565b60405180910390f35b610654600480360381019061064f91906122b4565b6113cc565b60405161066191906122f0565b60405180910390f35b610684600480360381019061067f91906122b4565b611408565b60405161069191906122f0565b60405180910390f35b6106b460048036038101906106af91906122b4565b611443565b6040516106c191906122f0565b60405180910390f35b6106e460048036038101906106df91906122b4565b611482565b6040516106f191906122f0565b60405180910390f35b610714600480360381019061070f91906122b4565b6114bd565b60405161072191906122f0565b60405180910390f35b610744600480360381019061073f91906122b4565b6114f8565b60405161075191906122f0565b60405180910390f35b610774600480360381019061076f91906122b4565b611533565b604051610781919061239b565b60405180910390f35b6107926115df565b60405161079f91906122f0565b60405180910390f35b6107c260048036038101906107bd91906122b4565b6115fe565b6040516107cf91906122f0565b60405180910390f35b6107f260048036038101906107ed91906122b4565b61163a565b6040516107ff91906122f0565b60405180910390f35b610822600480360381019061081d91906122b4565b611676565b60405161082f91906122f0565b60405180910390f35b610852600480360381019061084d91906122b4565b6116b5565b60405161085f91906122f0565b60405180910390f35b610882600480360381019061087d91906122b4565b6116f0565b60405161088f91906122f0565b60405180910390f35b6108b260048036038101906108ad91906122b4565b61172e565b6040516108bf91906122f0565b60405180910390f35b6108e260048036038101906108dd91906122b4565b611769565b6040516108ef91906122f0565b60405180910390f35b610912600480360381019061090d91906122b4565b6117ae565b60405161091f91906122f0565b60405180910390f35b610942600480360381019061093d91906124f2565b6117ea565b60405161094f9190612554565b60405180910390f35b610960611816565b60405161096d91906122f0565b60405180910390f35b610990600480360381019061098b91906122b4565b611852565b60405161099d91906122f0565b60405180910390f35b6109c060048036038101906109bb91906122b4565b611890565b6040516109cd91906122f0565b60405180910390f35b6109f060048036038101906109eb91906122b4565b6118cb565b6040516109fd91906122f0565b60405180910390f35b610a206004803603810190610a1b91906122b4565b611909565b604051610a2d91906122f0565b60405180910390f35b610a506004803603810190610a4b91906122b4565b611945565b604051610a5d91906122f0565b60405180910390f35b610a806004803603810190610a7b91906122b4565b611980565b604051610a8d91906122f0565b60405180910390f35b610ab06004803603810190610aab91906122b4565b6119bc565b604051610abd91906122f0565b60405180910390f35b610ae06004803603810190610adb91906122b4565b611a19565b604051610aed91906122f0565b60405180910390f35b610b106004803603810190610b0b91906122b4565b611a58565b604051610b1d91906122f0565b60405180910390f35b610b406004803603810190610b3b91906122b4565b611a93565b604051610b4d91906122f0565b60405180910390f35b610b706004803603810190610b6b91906122b4565b611adf565b604051610b7d91906122f0565b60405180910390f35b610ba06004803603810190610b9b91906122b4565b611b1f565b604051610bad91906122f0565b60405180910390f35b610bd06004803603810190610bcb91906124f2565b611b5a565b604051610bdd91906125b0565b60405180910390f35b610bee611bdc565b604051610bfb91906122f0565b60405180910390f35b610c1e6004803603810190610c1991906122b4565b611c27565b604051610c2b91906122f0565b60405180910390f35b610c4e6004803603810190610c4991906122b4565b611c62565b604051610c5b91906122f0565b60405180910390f35b610c7e6004803603810190610c7991906122b4565b611c9e565b604051610c8b91906122f0565b60405180910390f35b610cae6004803603810190610ca9919061262b565b611cda565b604051610cbb91906122f0565b60405180910390f35b610cde6004803603810190610cd991906122b4565b611d28565b604051610ceb91906122f0565b60405180910390f35b610d0e6004803603810190610d0991906122b4565b611d63565b604051610d1b91906122f0565b60405180910390f35b610d3e6004803603810190610d3991906122b4565b611d9e565b604051610d4b91906122f0565b60405180910390f35b610d6e6004803603810190610d6991906122b4565b611dd9565b604051610d7b91906122f0565b60405180910390f35b610d9e6004803603810190610d9991906122b4565b611e14565b604051610dab91906122f0565b60405180910390f35b610dce6004803603810190610dc991906122b4565b611e58565b604051610ddb91906122f0565b60405180910390f35b610dfe6004803603810190610df991906122b4565b611e94565b604051610e0b91906122f0565b60405180910390f35b610e2e6004803603810190610e2991906122b4565b611ecf565b604051610e3b91906122f0565b60405180910390f35b610e5e6004803603810190610e5991906122b4565b611f0d565b604051610e6b91906122f0565b60405180910390f35b610e8e6004803603810190610e8991906122b4565b611f4a565b604051610e9b91906122f0565b60405180910390f35b610ebe6004803603810190610eb991906122b4565b611f84565b604051610ecb91906122f0565b60405180910390f35b610eee6004803603810190610ee991906122b4565b611fc0565b604051610efb91906122f0565b60405180910390f35b610f1e6004803603810190610f1991906122b4565b611ffc565b604051610f2b91906122f0565b60405180910390f35b610f4e6004803603810190610f4991906122b4565b612057565b604051610f5b91906122f0565b60405180910390f35b610f7e6004803603810190610f7991906122b4565b612099565b604051610f8b91906122f0565b60405180910390f35b610fae6004803603810190610fa991906122b4565b6120d5565b604051610fbb91906122f0565b60405180910390f35b610fde6004803603810190610fd991906122b4565b612112565b604051610feb91906122f0565b60405180910390f35b61100e600480360381019061100991906122b4565b612154565b60405161101b91906122f0565b60405180910390f35b61103e600480360381019061103991906122b4565b612190565b60405161104b91906122f0565b60405180910390f35b61106e600480360381019061106991906122b4565b6121ce565b60405161107b91906122f0565b60405180910390f35b61109e600480360381019061109991906122b4565b61220d565b6040516110ab91906122f0565b60405180910390f35b60006110be6115df565b50600065deadbeef003690506000805b848110156110e4573691506001810190506110ce565b505080915050919050565b60006110f96115df565b50600065deadbeef003290506000805b8481101561111f57329150600181019050611109565b505080915050919050565b60006111346115df565b50600065deadbeef0052905060005b8381101561115a5781600052600181019050611143565b5080915050919050565b600061116e6115df565b50600065deadbeef0001905060005b838110156111965760008201915060018101905061117d565b5080915050919050565b60008054905090565b60006111b36115df565b50600065deadbeef0017905060005b838110156111db576000821791506001810190506111c2565b5080915050919050565b60006111ef6115df565b50600065deadbeef003490506000805b84811015611215573491506001810190506111ff565b505080915050919050565b600061122a6115df565b50600065deadbeef0006905060005b83811015611271577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82069150600181019050611239565b5080915050919050565b60006112856115df565b50600065deadbeef001390506000805b848110156112ae57600183139150600181019050611295565b505080915050919050565b60006112c36115df565b50600065deadbeef002090507fffffffff000000000000000000000000000000000000000000000000000000006000526000805b8481101561131157600460002091506001810190506112f7565b507f29045a592007d0c246ef02c2223570da9522d0cf0f73282c79a1bc8f0bb2c238811461133e57600091505b5080915050919050565b60006113526115df565b50600065deadbeef00a490508060105260005b83811015611384576004600360028360066010a4600181019050611365565b5080915050919050565b60006113986115df565b50600065deadbeef001a90506000805b848110156113c1578260001a91506001810190506113a8565b505080915050919050565b60006113d66115df565b50600065deadbeef001b905060005b838110156113fe578160001b91506001810190506113e5565b5080915050919050565b60006114126115df565b50600065deadbeef004290506000805b8481101561143857429150600181019050611422565b505080915050919050565b600061144d6115df565b50600065deadbeef0031905060003060005b85811015611476578131925060018101905061145f565b50505080915050919050565b600061148c6115df565b50600065deadbeef004890506000805b848110156114b25748915060018101905061149c565b505080915050919050565b60006114c76115df565b50600065deadbeef003d90506000805b848110156114ed573d91506001810190506114d7565b505080915050919050565b60006115026115df565b50600065deadbeef004390506000805b8481101561152857439150600181019050611512565b505080915050919050565b6002818154811061154357600080fd5b90600052602060002001600091509050805461155e906126a7565b80601f016020809104026020016040519081016040528092919081815260200182805461158a906126a7565b80156115d75780601f106115ac576101008083540402835291602001916115d7565b820191906000526020600020905b8154815290600101906020018083116115ba57829003601f168201915b505050505081565b600060016000546115f09190612707565b600081905550600054905090565b60006116086115df565b50600065deadbeef0004905060005b8381101561163057600182049150600181019050611617565b5080915050919050565b60006116446115df565b50600065deadbeef0037905060005b8381101561166c57602060008037600181019050611653565b5080915050919050565b60006116806115df565b50600065deadbeef00a090508060105260005b838110156116ab5760066010a0600181019050611693565b5080915050919050565b60006116bf6115df565b50600065deadbeef003390506000805b848110156116e5573391506001810190506116cf565b505080915050919050565b60006116fa6115df565b50600065deadbeef0053905060005b838110156117245763deadbeef600052600181019050611709565b5080915050919050565b60006117386115df565b50600065deadbeef003a90506000805b8481101561175e573a9150600181019050611748565b505080915050919050565b60006117736115df565b50600065deadbeef0051905060008160005260005b848110156117a0576000519150600181019050611788565b508091505080915050919050565b60006117b86115df565b50600065deadbeef001d905060005b838110156117e0578160001d91506001810190506117c7565b5080915050919050565b600080600290506020830183518360208183856000885af18061180c57600080fd5b5050505050919050565b60006118206115df565b505b6103e85a111561184a57600180600082825461183e9190612707565b92505081905550611822565b600154905090565b600061185c6115df565b50600065deadbeef001090506000805b848110156118855782600110915060018101905061186c565b505080915050919050565b600061189a6115df565b50600065deadbeef004490506000805b848110156118c0574491506001810190506118aa565b505080915050919050565b60006118d56115df565b50600065deadbeef001190506000805b848110156118fe576001831191506001810190506118e5565b505080915050919050565b60006119136115df565b50600065deadbeef003e905060005b8381101561193b5760206000803e600181019050611922565b5080915050919050565b600061194f6115df565b50600065deadbeef004590506000805b848110156119755745915060018101905061195f565b505080915050919050565b600061198a6115df565b50600065deadbeef0002905060005b838110156119b257600182029150600181019050611999565b5080915050919050565b60006119c66115df565b50600065deadbeef0008905060005b83811015611a0f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000830891506001810190506119d5565b5080915050919050565b6000611a236115df565b50600065deadbeef005490508060005560005b83811015611a4e576000549150600181019050611a36565b5080915050919050565b6000611a626115df565b50600065deadbeef005a90506000805b84811015611a88575a9150600181019050611a72565b505080915050919050565b6000611a9d6115df565b50600065deadbeef0019905060005b83811015611ac35781199150600181019050611aac565b5065deadbeef00198114611ad657801990505b80915050919050565b6000611ae96115df565b50600065deadbeef00a190508060105260005b83811015611b15578060066010a1600181019050611afc565b5080915050919050565b6000611b296115df565b50600065deadbeef0016905060005b83811015611b50578182169150600181019050611b38565b5080915050919050565b60006080825114611ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9790612798565b60405180910390fd5b600060019050602083016020810151601f1a602082015260206040516080836000865af180611bce57600080fd5b604051519350505050919050565b6000611be66115df565b505b6103e85a1115611c1f576001806000828254611c049190612707565b9250508190555043600154611c1991906127e7565b50611be8565b600154905090565b6000611c316115df565b50600065deadbeef004690506000805b84811015611c5757469150600181019050611c41565b505080915050919050565b6000611c6c6115df565b50600065deadbeef0005905060005b83811015611c9457600182059150600181019050611c7b565b5080915050919050565b6000611ca86115df565b50600065deadbeef0039905060005b83811015611cd057602060008039600181019050611cb7565b5080915050919050565b60006002838390918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611d199291906129cf565b50600280549050905092915050565b6000611d326115df565b50600065deadbeef005990506000805b84811015611d5857599150600181019050611d42565b505080915050919050565b6000611d6d6115df565b50600065deadbeef003890506000805b84811015611d9357389150600181019050611d7d565b505080915050919050565b6000611da86115df565b50600065deadbeef004190506000805b84811015611dce57419150600181019050611db8565b505080915050919050565b6000611de36115df565b50600065deadbeef003090506000805b84811015611e0957309150600181019050611df3565b505080915050919050565b6000611e1e6115df565b50600065deadbeef00a390508060105260005b83811015611e4e57600360028260066010a3600181019050611e31565b5080915050919050565b6000611e626115df565b50600065deadbeef000b905060005b83811015611e8a578160200b9150600181019050611e71565b5080915050919050565b6000611e9e6115df565b50600065deadbeef004790506000805b84811015611ec457479150600181019050611eae565b505080915050919050565b6000611ed96115df565b50600065deadbeef001c90506000805b84811015611f02578260001c9250600181019050611ee9565b505080915050919050565b6000611f176115df565b50600065deadbeef003590506000805b84811015611f3f576000359150600181019050611f27565b505080915050919050565b6000611f546115df565b50600065deadbeef0055905060005b83811015611f7a5781600055600181019050611f63565b5080915050919050565b6000611f8e6115df565b50600065deadbeef0018905060005b83811015611fb657600082189150600181019050611f9d565b5080915050919050565b6000611fca6115df565b50600065deadbeef0003905060005b83811015611ff257600082039150600181019050611fd9565b5080915050919050565b60006120066115df565b50600065deadbeef0007905060005b8381101561204d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82079150600181019050612015565b5080915050919050565b60006120616115df565b50600065deadbeef00a290508060105260005b8381101561208f5760028160066010a2600181019050612074565b5080915050919050565b60006120a36115df565b50600065deadbeef000a905060005b838110156120cb576001820a91506001810190506120b2565b5080915050919050565b60006120df6115df565b50600065deadbeef001490506000805b848110156121075782831491506001810190506120ef565b505080915050919050565b600061211c6115df565b50600065deadbeef0040905060006001430360005b858110156121485781409250600181019050612131565b50505080915050919050565b600061215e6115df565b50600065deadbeef001590506000805b84811015612185578215915060018101905061216e565b505080915050919050565b600061219a6115df565b50600065deadbeef001290506000805b848110156121c3578260011291506001810190506121aa565b505080915050919050565b60006121d86115df565b50600065deadbeef003b905060003060005b8581101561220157813b92506001810190506121ea565b50505080915050919050565b60006122176115df565b50600065deadbeef0009905060005b83811015612260577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600183099150600181019050612226565b5080915050919050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6122918161227e565b811461229c57600080fd5b50565b6000813590506122ae81612288565b92915050565b6000602082840312156122ca576122c9612274565b5b60006122d88482850161229f565b91505092915050565b6122ea8161227e565b82525050565b600060208201905061230560008301846122e1565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561234557808201518184015260208101905061232a565b60008484015250505050565b6000601f19601f8301169050919050565b600061236d8261230b565b6123778185612316565b9350612387818560208601612327565b61239081612351565b840191505092915050565b600060208201905081810360008301526123b58184612362565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6123ff82612351565b810181811067ffffffffffffffff8211171561241e5761241d6123c7565b5b80604052505050565b600061243161226a565b905061243d82826123f6565b919050565b600067ffffffffffffffff82111561245d5761245c6123c7565b5b61246682612351565b9050602081019050919050565b82818337600083830152505050565b600061249561249084612442565b612427565b9050828152602081018484840111156124b1576124b06123c2565b5b6124bc848285612473565b509392505050565b600082601f8301126124d9576124d86123bd565b5b81356124e9848260208601612482565b91505092915050565b60006020828403121561250857612507612274565b5b600082013567ffffffffffffffff81111561252657612525612279565b5b612532848285016124c4565b91505092915050565b6000819050919050565b61254e8161253b565b82525050565b60006020820190506125696000830184612545565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061259a8261256f565b9050919050565b6125aa8161258f565b82525050565b60006020820190506125c560008301846125a1565b92915050565b600080fd5b600080fd5b60008083601f8401126125eb576125ea6123bd565b5b8235905067ffffffffffffffff811115612608576126076125cb565b5b602083019150836001820283011115612624576126236125d0565b5b9250929050565b6000806020838503121561264257612641612274565b5b600083013567ffffffffffffffff8111156126605761265f612279565b5b61266c858286016125d5565b92509250509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806126bf57607f821691505b6020821081036126d2576126d1612678565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006127128261227e565b915061271d8361227e565b9250828201905080821115612735576127346126d8565b5b92915050565b600082825260208201905092915050565b7f496e76616c696420696e7075742064617461206c656e6774682e000000000000600082015250565b6000612782601a8361273b565b915061278d8261274c565b602082019050919050565b600060208201905081810360008301526127b181612775565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006127f28261227e565b91506127fd8361227e565b92508261280d5761280c6127b8565b5b828206905092915050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026128857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612848565b61288f8683612848565b95508019841693508086168417925050509392505050565b6000819050919050565b60006128cc6128c76128c28461227e565b6128a7565b61227e565b9050919050565b6000819050919050565b6128e6836128b1565b6128fa6128f2826128d3565b848454612855565b825550505050565b600090565b61290f612902565b61291a8184846128dd565b505050565b5b8181101561293e57612933600082612907565b600181019050612920565b5050565b601f8211156129835761295481612823565b61295d84612838565b8101602085101561296c578190505b61298061297885612838565b83018261291f565b50505b505050565b600082821c905092915050565b60006129a660001984600802612988565b1980831691505092915050565b60006129bf8383612995565b9150826002028217905092915050565b6129d98383612818565b67ffffffffffffffff8111156129f2576129f16123c7565b5b6129fc82546126a7565b612a07828285612942565b6000601f831160018114612a365760008415612a24578287013590505b612a2e85826129b3565b865550612a96565b601f198416612a4486612823565b60005b82811015612a6c57848901358255600182019150602085019450602081019050612a47565b86831015612a895784890135612a85601f891682612995565b8355505b6001600288020188555050505b5050505050505056fea26469706673582212204a9cf5efd0682f02ed0d6661486d32a6366e2e8118c3070ee23e44a788b11f4364736f6c63430008130033", + ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"dumpster\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCallCounter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inc\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"loopBlockHashUntilLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"loopUntilLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"trash\",\"type\":\"bytes\"}],\"name\":\"store\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testADD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testADDMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testADDRESS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testAND\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBALANCE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBASEFEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBLOCKHASH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBYTE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLDATACOPY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLDATALOAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLDATASIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLER\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLVALUE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCHAINID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCODECOPY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCODESIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCOINBASE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testDIFFICULTY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testDIV\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testECRecover\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"result\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testEQ\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testEXP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testEXTCODESIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGASLIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGASPRICE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testISZERO\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testIdentity\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG0\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG3\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG4\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMLOAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMSIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMSTORE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMSTORE8\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMUL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMULMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testNOT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testNUMBER\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testORIGIN\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testRETURNDATACOPY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testRETURNDATASIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testRipemd160\",\"outputs\":[{\"internalType\":\"bytes20\",\"name\":\"result\",\"type\":\"bytes20\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSAR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSDIV\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSELFBALANCE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSGT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testSHA256\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"result\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSHA3\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSHL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSHR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSIGNEXTEND\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSLOAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSLT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSSTORE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSUB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testTIMESTAMP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testXOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x608060405234801561001057600080fd5b50612c04806100206000396000f3fe608060405234801561001057600080fd5b506004361061041d5760003560e01c80637de8c6f81161022b578063bf529ca111610130578063dd9bef60116100b8578063f279ca8111610087578063f279ca811461103a578063f4d1fc611461106a578063f58fc36a1461109a578063f6b0bbf7146110ca578063fde7721c146110fa5761041d565b8063dd9bef6014610f7a578063de97a36314610faa578063e9f9b3f214610fda578063ea5141e61461100a5761041d565b8063ce3cf4ef116100ff578063ce3cf4ef14610e8a578063d117320b14610eba578063d51e7b5b14610eea578063d53ff3fd14610f1a578063d93cd55814610f4a5761041d565b8063bf529ca114610dca578063c360aba614610dfa578063c420eb6114610e2a578063c4bd65d514610e5a5761041d565b8063a271b721116101b3578063b374012b11610182578063b374012b14610cda578063b3d847f214610d0a578063b7b8620714610d3a578063b81c148414610d6a578063bdc875fc14610d9a5761041d565b8063a271b72114610c2c578063a60a108714610c4a578063a645c9c214610c7a578063acaebdf614610caa5761041d565b806391e7b277116101fa57806391e7b27714610b3c57806398456f3e14610b6c5780639a2b7c8114610b9c5780639cce7cf914610bcc578063a18683cb14610bfc5761041d565b80637de8c6f814610a7c57806380947f8014610aac578063880eff3914610adc578063918a5fcd14610b0c5761041d565b80632d34e798116103315780635590c2d9116102b95780636e7f1fe7116102885780636e7f1fe71461098c5780636f099c8d146109bc57806371d91d28146109ec5780637b6e0b0e14610a1c5780637c191d2014610a4c5761041d565b80635590c2d9146108de57806360e13cde1461090e57806363138d4f1461093e578063659bbb4f1461096e5761041d565b80633a425dfc116103005780633a425dfc146107ee57806340fe26621461081e57806344cf3bc71461084e5780634a61af1f1461087e5780634d2c74b3146108ae5761041d565b80632d34e798146107405780633430ec0614610770578063371303c0146107a05780633a411f12146107be5761041d565b806318093b46116103b45780632007332e116103835780632007332e14610650578063219cddeb146106805780632294fc7f146106b05780632871ef85146106e05780632b21ef44146107105761041d565b806318093b461461059057806319b621d6146105c05780631aba07ea146105f05780631de2f343146106205761041d565b80631287a68c116103f05780631287a68c146104e2578063135d52f7146105005780631581cf191461053057806316582150146105605761041d565b8063034aef7114610422578063050082f814610452578063087b4e84146104825780630ba8a73b146104b2575b600080fd5b61043c6004803603810190610437919061238d565b61112a565b60405161044991906123c9565b60405180910390f35b61046c6004803603810190610467919061238d565b611165565b60405161047991906123c9565b60405180910390f35b61049c6004803603810190610497919061238d565b6111a0565b6040516104a991906123c9565b60405180910390f35b6104cc60048036038101906104c7919061238d565b6111da565b6040516104d991906123c9565b60405180910390f35b6104ea611216565b6040516104f791906123c9565b60405180910390f35b61051a6004803603810190610515919061238d565b61121f565b60405161052791906123c9565b60405180910390f35b61054a6004803603810190610545919061238d565b61125b565b60405161055791906123c9565b60405180910390f35b61057a6004803603810190610575919061238d565b611296565b60405161058791906123c9565b60405180910390f35b6105aa60048036038101906105a5919061238d565b6112f1565b6040516105b791906123c9565b60405180910390f35b6105da60048036038101906105d5919061238d565b61132f565b6040516105e791906123c9565b60405180910390f35b61060a6004803603810190610605919061238d565b6113be565b60405161061791906123c9565b60405180910390f35b61063a6004803603810190610635919061238d565b611404565b60405161064791906123c9565b60405180910390f35b61066a6004803603810190610665919061238d565b611442565b60405161067791906123c9565b60405180910390f35b61069a6004803603810190610695919061238d565b61147e565b6040516106a791906123c9565b60405180910390f35b6106ca60048036038101906106c5919061238d565b6114b9565b6040516106d791906123c9565b60405180910390f35b6106fa60048036038101906106f5919061238d565b6114f8565b60405161070791906123c9565b60405180910390f35b61072a6004803603810190610725919061238d565b611533565b60405161073791906123c9565b60405180910390f35b61075a6004803603810190610755919061238d565b61156e565b60405161076791906123c9565b60405180910390f35b61078a6004803603810190610785919061238d565b6115a9565b6040516107979190612474565b60405180910390f35b6107a8611655565b6040516107b591906123c9565b60405180910390f35b6107d860048036038101906107d3919061238d565b611674565b6040516107e591906123c9565b60405180910390f35b6108086004803603810190610803919061238d565b6116b0565b60405161081591906123c9565b60405180910390f35b6108386004803603810190610833919061238d565b6116ec565b60405161084591906123c9565b60405180910390f35b6108686004803603810190610863919061238d565b61172b565b60405161087591906123c9565b60405180910390f35b6108986004803603810190610893919061238d565b611766565b6040516108a591906123c9565b60405180910390f35b6108c860048036038101906108c3919061238d565b6117a4565b6040516108d591906123c9565b60405180910390f35b6108f860048036038101906108f3919061238d565b6117df565b60405161090591906123c9565b60405180910390f35b6109286004803603810190610923919061238d565b611824565b60405161093591906123c9565b60405180910390f35b610958600480360381019061095391906125cb565b611860565b604051610965919061262d565b60405180910390f35b61097661188c565b60405161098391906123c9565b60405180910390f35b6109a660048036038101906109a1919061238d565b6118c8565b6040516109b391906123c9565b60405180910390f35b6109d660048036038101906109d1919061238d565b611906565b6040516109e391906123c9565b60405180910390f35b610a066004803603810190610a01919061238d565b611941565b604051610a1391906123c9565b60405180910390f35b610a366004803603810190610a31919061238d565b61197f565b604051610a4391906123c9565b60405180910390f35b610a666004803603810190610a61919061238d565b6119bb565b604051610a7391906123c9565b60405180910390f35b610a966004803603810190610a91919061238d565b6119f6565b604051610aa391906123c9565b60405180910390f35b610ac66004803603810190610ac1919061238d565b611a32565b604051610ad391906123c9565b60405180910390f35b610af66004803603810190610af1919061238d565b611a8f565b604051610b0391906123c9565b60405180910390f35b610b266004803603810190610b21919061238d565b611ace565b604051610b3391906123c9565b60405180910390f35b610b566004803603810190610b51919061238d565b611b09565b604051610b6391906123c9565b60405180910390f35b610b866004803603810190610b81919061238d565b611b55565b604051610b9391906123c9565b60405180910390f35b610bb66004803603810190610bb1919061238d565b611b95565b604051610bc391906123c9565b60405180910390f35b610be66004803603810190610be191906125cb565b611bd0565b604051610bf39190612474565b60405180910390f35b610c166004803603810190610c1191906125cb565b611c01565b604051610c239190612689565b60405180910390f35b610c34611c83565b604051610c4191906123c9565b60405180910390f35b610c646004803603810190610c5f919061238d565b611cce565b604051610c7191906123c9565b60405180910390f35b610c946004803603810190610c8f919061238d565b611d09565b604051610ca191906123c9565b60405180910390f35b610cc46004803603810190610cbf919061238d565b611d45565b604051610cd191906123c9565b60405180910390f35b610cf46004803603810190610cef9190612704565b611d81565b604051610d0191906123c9565b60405180910390f35b610d246004803603810190610d1f919061238d565b611dcf565b604051610d3191906123c9565b60405180910390f35b610d546004803603810190610d4f919061238d565b611e0a565b604051610d6191906123c9565b60405180910390f35b610d846004803603810190610d7f919061238d565b611e45565b604051610d9191906123c9565b60405180910390f35b610db46004803603810190610daf919061238d565b611e80565b604051610dc191906123c9565b60405180910390f35b610de46004803603810190610ddf919061238d565b611ebb565b604051610df191906123c9565b60405180910390f35b610e146004803603810190610e0f919061238d565b611eff565b604051610e2191906123c9565b60405180910390f35b610e446004803603810190610e3f919061238d565b611f3b565b604051610e5191906123c9565b60405180910390f35b610e746004803603810190610e6f919061238d565b611f76565b604051610e8191906123c9565b60405180910390f35b610ea46004803603810190610e9f919061238d565b611fb4565b604051610eb191906123c9565b60405180910390f35b610ed46004803603810190610ecf919061238d565b611ff1565b604051610ee191906123c9565b60405180910390f35b610f046004803603810190610eff919061238d565b61202b565b604051610f1191906123c9565b60405180910390f35b610f346004803603810190610f2f919061238d565b612067565b604051610f4191906123c9565b60405180910390f35b610f646004803603810190610f5f919061238d565b6120a3565b604051610f7191906123c9565b60405180910390f35b610f946004803603810190610f8f919061238d565b6120fe565b604051610fa191906123c9565b60405180910390f35b610fc46004803603810190610fbf919061238d565b612140565b604051610fd191906123c9565b60405180910390f35b610ff46004803603810190610fef919061238d565b61217c565b60405161100191906123c9565b60405180910390f35b611024600480360381019061101f919061238d565b6121b9565b60405161103191906123c9565b60405180910390f35b611054600480360381019061104f919061238d565b6121fb565b60405161106191906123c9565b60405180910390f35b611084600480360381019061107f919061238d565b612237565b60405161109191906123c9565b60405180910390f35b6110b460048036038101906110af919061238d565b612275565b6040516110c191906123c9565b60405180910390f35b6110e460048036038101906110df91906125cb565b6122b4565b6040516110f1919061278c565b60405180910390f35b611114600480360381019061110f919061238d565b6122e6565b60405161112191906123c9565b60405180910390f35b6000611134611655565b50600065deadbeef003690506000805b8481101561115a57369150600181019050611144565b505080915050919050565b600061116f611655565b50600065deadbeef003290506000805b848110156111955732915060018101905061117f565b505080915050919050565b60006111aa611655565b50600065deadbeef0052905060005b838110156111d057816000526001810190506111b9565b5080915050919050565b60006111e4611655565b50600065deadbeef0001905060005b8381101561120c576000820191506001810190506111f3565b5080915050919050565b60008054905090565b6000611229611655565b50600065deadbeef0017905060005b8381101561125157600082179150600181019050611238565b5080915050919050565b6000611265611655565b50600065deadbeef003490506000805b8481101561128b57349150600181019050611275565b505080915050919050565b60006112a0611655565b50600065deadbeef0006905060005b838110156112e7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820691506001810190506112af565b5080915050919050565b60006112fb611655565b50600065deadbeef001390506000805b848110156113245760018313915060018101905061130b565b505080915050919050565b6000611339611655565b50600065deadbeef002090507fffffffff000000000000000000000000000000000000000000000000000000006000526000805b84811015611387576004600020915060018101905061136d565b507f29045a592007d0c246ef02c2223570da9522d0cf0f73282c79a1bc8f0bb2c23881146113b457600091505b5080915050919050565b60006113c8611655565b50600065deadbeef00a490508060105260005b838110156113fa576004600360028360066010a46001810190506113db565b5080915050919050565b600061140e611655565b50600065deadbeef001a90506000805b84811015611437578260001a915060018101905061141e565b505080915050919050565b600061144c611655565b50600065deadbeef001b905060005b83811015611474578160001b915060018101905061145b565b5080915050919050565b6000611488611655565b50600065deadbeef004290506000805b848110156114ae57429150600181019050611498565b505080915050919050565b60006114c3611655565b50600065deadbeef0031905060003060005b858110156114ec57813192506001810190506114d5565b50505080915050919050565b6000611502611655565b50600065deadbeef004890506000805b8481101561152857489150600181019050611512565b505080915050919050565b600061153d611655565b50600065deadbeef003d90506000805b84811015611563573d915060018101905061154d565b505080915050919050565b6000611578611655565b50600065deadbeef004390506000805b8481101561159e57439150600181019050611588565b505080915050919050565b600281815481106115b957600080fd5b9060005260206000200160009150905080546115d4906127d6565b80601f0160208091040260200160405190810160405280929190818152602001828054611600906127d6565b801561164d5780601f106116225761010080835404028352916020019161164d565b820191906000526020600020905b81548152906001019060200180831161163057829003601f168201915b505050505081565b600060016000546116669190612836565b600081905550600054905090565b600061167e611655565b50600065deadbeef0004905060005b838110156116a65760018204915060018101905061168d565b5080915050919050565b60006116ba611655565b50600065deadbeef0037905060005b838110156116e2576020600080376001810190506116c9565b5080915050919050565b60006116f6611655565b50600065deadbeef00a090508060105260005b838110156117215760066010a0600181019050611709565b5080915050919050565b6000611735611655565b50600065deadbeef003390506000805b8481101561175b57339150600181019050611745565b505080915050919050565b6000611770611655565b50600065deadbeef0053905060005b8381101561179a5763deadbeef60005260018101905061177f565b5080915050919050565b60006117ae611655565b50600065deadbeef003a90506000805b848110156117d4573a91506001810190506117be565b505080915050919050565b60006117e9611655565b50600065deadbeef0051905060008160005260005b848110156118165760005191506001810190506117fe565b508091505080915050919050565b600061182e611655565b50600065deadbeef001d905060005b83811015611856578160001d915060018101905061183d565b5080915050919050565b600080600290506020830183518360208183856000885af18061188257600080fd5b5050505050919050565b6000611896611655565b505b6103e85a11156118c05760018060008282546118b49190612836565b92505081905550611898565b600154905090565b60006118d2611655565b50600065deadbeef001090506000805b848110156118fb578260011091506001810190506118e2565b505080915050919050565b6000611910611655565b50600065deadbeef004490506000805b8481101561193657449150600181019050611920565b505080915050919050565b600061194b611655565b50600065deadbeef001190506000805b848110156119745760018311915060018101905061195b565b505080915050919050565b6000611989611655565b50600065deadbeef003e905060005b838110156119b15760206000803e600181019050611998565b5080915050919050565b60006119c5611655565b50600065deadbeef004590506000805b848110156119eb574591506001810190506119d5565b505080915050919050565b6000611a00611655565b50600065deadbeef0002905060005b83811015611a2857600182029150600181019050611a0f565b5080915050919050565b6000611a3c611655565b50600065deadbeef0008905060005b83811015611a85577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600083089150600181019050611a4b565b5080915050919050565b6000611a99611655565b50600065deadbeef005490508060005560005b83811015611ac4576000549150600181019050611aac565b5080915050919050565b6000611ad8611655565b50600065deadbeef005a90506000805b84811015611afe575a9150600181019050611ae8565b505080915050919050565b6000611b13611655565b50600065deadbeef0019905060005b83811015611b395781199150600181019050611b22565b5065deadbeef00198114611b4c57801990505b80915050919050565b6000611b5f611655565b50600065deadbeef00a190508060105260005b83811015611b8b578060066010a1600181019050611b72565b5080915050919050565b6000611b9f611655565b50600065deadbeef0016905060005b83811015611bc6578182169150600181019050611bae565b5080915050919050565b6060600060049050602083018351604051818183856000885af180611bf457600080fd5b8195505050505050919050565b60006080825114611c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3e906128c7565b60405180910390fd5b600060019050602083016020810151601f1a602082015260206040516080836000865af180611c7557600080fd5b604051519350505050919050565b6000611c8d611655565b505b6103e85a1115611cc6576001806000828254611cab9190612836565b9250508190555043600154611cc09190612916565b50611c8f565b600154905090565b6000611cd8611655565b50600065deadbeef004690506000805b84811015611cfe57469150600181019050611ce8565b505080915050919050565b6000611d13611655565b50600065deadbeef0005905060005b83811015611d3b57600182059150600181019050611d22565b5080915050919050565b6000611d4f611655565b50600065deadbeef0039905060005b83811015611d7757602060008039600181019050611d5e565b5080915050919050565b60006002838390918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611dc0929190612afe565b50600280549050905092915050565b6000611dd9611655565b50600065deadbeef005990506000805b84811015611dff57599150600181019050611de9565b505080915050919050565b6000611e14611655565b50600065deadbeef003890506000805b84811015611e3a57389150600181019050611e24565b505080915050919050565b6000611e4f611655565b50600065deadbeef004190506000805b84811015611e7557419150600181019050611e5f565b505080915050919050565b6000611e8a611655565b50600065deadbeef003090506000805b84811015611eb057309150600181019050611e9a565b505080915050919050565b6000611ec5611655565b50600065deadbeef00a390508060105260005b83811015611ef557600360028260066010a3600181019050611ed8565b5080915050919050565b6000611f09611655565b50600065deadbeef000b905060005b83811015611f31578160200b9150600181019050611f18565b5080915050919050565b6000611f45611655565b50600065deadbeef004790506000805b84811015611f6b57479150600181019050611f55565b505080915050919050565b6000611f80611655565b50600065deadbeef001c90506000805b84811015611fa9578260001c9250600181019050611f90565b505080915050919050565b6000611fbe611655565b50600065deadbeef003590506000805b84811015611fe6576000359150600181019050611fce565b505080915050919050565b6000611ffb611655565b50600065deadbeef0055905060005b83811015612021578160005560018101905061200a565b5080915050919050565b6000612035611655565b50600065deadbeef0018905060005b8381101561205d57600082189150600181019050612044565b5080915050919050565b6000612071611655565b50600065deadbeef0003905060005b8381101561209957600082039150600181019050612080565b5080915050919050565b60006120ad611655565b50600065deadbeef0007905060005b838110156120f4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820791506001810190506120bc565b5080915050919050565b6000612108611655565b50600065deadbeef00a290508060105260005b838110156121365760028160066010a260018101905061211b565b5080915050919050565b600061214a611655565b50600065deadbeef000a905060005b83811015612172576001820a9150600181019050612159565b5080915050919050565b6000612186611655565b50600065deadbeef001490506000805b848110156121ae578283149150600181019050612196565b505080915050919050565b60006121c3611655565b50600065deadbeef0040905060006001430360005b858110156121ef57814092506001810190506121d8565b50505080915050919050565b6000612205611655565b50600065deadbeef001590506000805b8481101561222c5782159150600181019050612215565b505080915050919050565b6000612241611655565b50600065deadbeef001290506000805b8481101561226a57826001129150600181019050612251565b505080915050919050565b600061227f611655565b50600065deadbeef003b905060003060005b858110156122a857813b9250600181019050612291565b50505080915050919050565b6000806003905060208301835160405160148183856000885af1806122d857600080fd5b815195505050505050919050565b60006122f0611655565b50600065deadbeef0009905060005b83811015612339577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001830991506001810190506122ff565b5080915050919050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61236a81612357565b811461237557600080fd5b50565b60008135905061238781612361565b92915050565b6000602082840312156123a3576123a261234d565b5b60006123b184828501612378565b91505092915050565b6123c381612357565b82525050565b60006020820190506123de60008301846123ba565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561241e578082015181840152602081019050612403565b60008484015250505050565b6000601f19601f8301169050919050565b6000612446826123e4565b61245081856123ef565b9350612460818560208601612400565b6124698161242a565b840191505092915050565b6000602082019050818103600083015261248e818461243b565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6124d88261242a565b810181811067ffffffffffffffff821117156124f7576124f66124a0565b5b80604052505050565b600061250a612343565b905061251682826124cf565b919050565b600067ffffffffffffffff821115612536576125356124a0565b5b61253f8261242a565b9050602081019050919050565b82818337600083830152505050565b600061256e6125698461251b565b612500565b90508281526020810184848401111561258a5761258961249b565b5b61259584828561254c565b509392505050565b600082601f8301126125b2576125b1612496565b5b81356125c284826020860161255b565b91505092915050565b6000602082840312156125e1576125e061234d565b5b600082013567ffffffffffffffff8111156125ff576125fe612352565b5b61260b8482850161259d565b91505092915050565b6000819050919050565b61262781612614565b82525050565b6000602082019050612642600083018461261e565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061267382612648565b9050919050565b61268381612668565b82525050565b600060208201905061269e600083018461267a565b92915050565b600080fd5b600080fd5b60008083601f8401126126c4576126c3612496565b5b8235905067ffffffffffffffff8111156126e1576126e06126a4565b5b6020830191508360018202830111156126fd576126fc6126a9565b5b9250929050565b6000806020838503121561271b5761271a61234d565b5b600083013567ffffffffffffffff81111561273957612738612352565b5b612745858286016126ae565b92509250509250929050565b60007fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b61278681612751565b82525050565b60006020820190506127a1600083018461277d565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806127ee57607f821691505b602082108103612801576128006127a7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061284182612357565b915061284c83612357565b925082820190508082111561286457612863612807565b5b92915050565b600082825260208201905092915050565b7f496e76616c696420696e7075742064617461206c656e6774682e000000000000600082015250565b60006128b1601a8361286a565b91506128bc8261287b565b602082019050919050565b600060208201905081810360008301526128e0816128a4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061292182612357565b915061292c83612357565b92508261293c5761293b6128e7565b5b828206905092915050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026129b47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612977565b6129be8683612977565b95508019841693508086168417925050509392505050565b6000819050919050565b60006129fb6129f66129f184612357565b6129d6565b612357565b9050919050565b6000819050919050565b612a15836129e0565b612a29612a2182612a02565b848454612984565b825550505050565b600090565b612a3e612a31565b612a49818484612a0c565b505050565b5b81811015612a6d57612a62600082612a36565b600181019050612a4f565b5050565b601f821115612ab257612a8381612952565b612a8c84612967565b81016020851015612a9b578190505b612aaf612aa785612967565b830182612a4e565b50505b505050565b600082821c905092915050565b6000612ad560001984600802612ab7565b1980831691505092915050565b6000612aee8383612ac4565b9150826002028217905092915050565b612b088383612947565b67ffffffffffffffff811115612b2157612b206124a0565b5b612b2b82546127d6565b612b36828285612a71565b6000601f831160018114612b655760008415612b53578287013590505b612b5d8582612ae2565b865550612bc5565b601f198416612b7386612952565b60005b82811015612b9b57848901358255600182019150602085019450602081019050612b76565b86831015612bb85784890135612bb4601f891682612ac4565b8355505b6001600288020188555050505b5050505050505056fea2646970667358221220224f9cc55b756f70a556b24e75bc7fbd949d95f68d437b6b711c6f3d23cea5b564736f6c63430008130033", } // LoadTesterABI is the input ABI used to generate the binding from. @@ -936,6 +936,27 @@ func (_LoadTester *LoadTesterTransactorSession) TestISZERO(x *big.Int) (*types.T return _LoadTester.Contract.TestISZERO(&_LoadTester.TransactOpts, x) } +// TestIdentity is a paid mutator transaction binding the contract method 0x9cce7cf9. +// +// Solidity: function testIdentity(bytes inputData) returns(bytes result) +func (_LoadTester *LoadTesterTransactor) TestIdentity(opts *bind.TransactOpts, inputData []byte) (*types.Transaction, error) { + return _LoadTester.contract.Transact(opts, "testIdentity", inputData) +} + +// TestIdentity is a paid mutator transaction binding the contract method 0x9cce7cf9. +// +// Solidity: function testIdentity(bytes inputData) returns(bytes result) +func (_LoadTester *LoadTesterSession) TestIdentity(inputData []byte) (*types.Transaction, error) { + return _LoadTester.Contract.TestIdentity(&_LoadTester.TransactOpts, inputData) +} + +// TestIdentity is a paid mutator transaction binding the contract method 0x9cce7cf9. +// +// Solidity: function testIdentity(bytes inputData) returns(bytes result) +func (_LoadTester *LoadTesterTransactorSession) TestIdentity(inputData []byte) (*types.Transaction, error) { + return _LoadTester.Contract.TestIdentity(&_LoadTester.TransactOpts, inputData) +} + // TestLOG0 is a paid mutator transaction binding the contract method 0x40fe2662. // // Solidity: function testLOG0(uint256 x) returns(uint256) @@ -1335,6 +1356,27 @@ func (_LoadTester *LoadTesterTransactorSession) TestRETURNDATASIZE(x *big.Int) ( return _LoadTester.Contract.TestRETURNDATASIZE(&_LoadTester.TransactOpts, x) } +// TestRipemd160 is a paid mutator transaction binding the contract method 0xf6b0bbf7. +// +// Solidity: function testRipemd160(bytes inputData) returns(bytes20 result) +func (_LoadTester *LoadTesterTransactor) TestRipemd160(opts *bind.TransactOpts, inputData []byte) (*types.Transaction, error) { + return _LoadTester.contract.Transact(opts, "testRipemd160", inputData) +} + +// TestRipemd160 is a paid mutator transaction binding the contract method 0xf6b0bbf7. +// +// Solidity: function testRipemd160(bytes inputData) returns(bytes20 result) +func (_LoadTester *LoadTesterSession) TestRipemd160(inputData []byte) (*types.Transaction, error) { + return _LoadTester.Contract.TestRipemd160(&_LoadTester.TransactOpts, inputData) +} + +// TestRipemd160 is a paid mutator transaction binding the contract method 0xf6b0bbf7. +// +// Solidity: function testRipemd160(bytes inputData) returns(bytes20 result) +func (_LoadTester *LoadTesterTransactorSession) TestRipemd160(inputData []byte) (*types.Transaction, error) { + return _LoadTester.Contract.TestRipemd160(&_LoadTester.TransactOpts, inputData) +} + // TestSAR is a paid mutator transaction binding the contract method 0x60e13cde. // // Solidity: function testSAR(uint256 x) returns(uint256) diff --git a/contracts/precompiledContracts.go b/contracts/precompiledContracts.go index dbc2291a..3bb08971 100644 --- a/contracts/precompiledContracts.go +++ b/contracts/precompiledContracts.go @@ -38,6 +38,18 @@ func GenerateSHA256Input() []byte { return paddedInput } +func GenerateRIPEMD160Input() []byte { + inputData := []byte("Test") + + return inputData +} + +func GenerateIdentityInput() []byte { + inputData := []byte("Test") + + return inputData +} + func CallPrecompiledContracts(address int, lt *LoadTester, opts *bind.TransactOpts, iterations uint64, privateKey *ecdsa.PrivateKey) (*ethtypes.Transaction, error) { var inputData []byte @@ -50,7 +62,14 @@ func CallPrecompiledContracts(address int, lt *LoadTester, opts *bind.TransactOp log.Trace().Str("method", "TestSHA256").Msg("Executing contract method") inputData = GenerateSHA256Input() return lt.TestSHA256(opts, inputData) - // case 3: + case 3: + log.Trace().Str("method", "TestRipemd160").Msg("Executing contract method") + inputData = GenerateRIPEMD160Input() + return lt.TestRipemd160(opts, inputData) + case 4: + log.Trace().Str("method", "TestIdentity").Msg("Executing contract method") + inputData = GenerateIdentityInput() + return lt.TestIdentity(opts, inputData) // case 4: // case 5: // case 6: @@ -71,7 +90,7 @@ func CallPrecompiledContracts(address int, lt *LoadTester, opts *bind.TransactOp } func GetRandomPrecompiledContractAddress() int { - n := 2 + n := 4 return rand.Intn(n) + 1 // [1, n + 1) // return rand.Intn(17) + 1 } From 55d6d8a504ebd55b1a59f67abb9b3f6160de5470 Mon Sep 17 00:00:00 2001 From: Idris Hanafi Date: Thu, 30 Mar 2023 09:52:54 -0400 Subject: [PATCH 4/7] feat: modexp and ecAdd implemented but ecAdd is buggy --- contracts/LoadTester.abi | 2 +- contracts/LoadTester.bin | 2 +- contracts/LoadTester.sol | 33 +++++++++++++ contracts/loadtester.go | 46 +++++++++++++++++- contracts/precompiledContracts.go | 77 +++++++++++++++++++++++++------ 5 files changed, 143 insertions(+), 17 deletions(-) diff --git a/contracts/LoadTester.abi b/contracts/LoadTester.abi index f17c6a49..f3767b12 100644 --- a/contracts/LoadTester.abi +++ b/contracts/LoadTester.abi @@ -1 +1 @@ -[{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"dumpster","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCallCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"loopBlockHashUntilLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"loopUntilLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"trash","type":"bytes"}],"name":"store","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testADD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testADDMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testADDRESS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testAND","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBALANCE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBASEFEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBLOCKHASH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBYTE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLDATACOPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLDATALOAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLDATASIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLVALUE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCHAINID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCODECOPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCODESIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCOINBASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testDIFFICULTY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testDIV","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testECRecover","outputs":[{"internalType":"address","name":"result","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testEQ","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testEXP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testEXTCODESIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGAS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGASLIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGASPRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testISZERO","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testIdentity","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG0","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG4","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMLOAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMSIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMSTORE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMSTORE8","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMUL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMULMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testNOT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testNUMBER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testORIGIN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testRETURNDATACOPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testRETURNDATASIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testRipemd160","outputs":[{"internalType":"bytes20","name":"result","type":"bytes20"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSAR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSDIV","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSELFBALANCE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSGT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testSHA256","outputs":[{"internalType":"bytes32","name":"result","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSHA3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSHL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSHR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSIGNEXTEND","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSLOAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSLT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSSTORE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSUB","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testTIMESTAMP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testXOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file +[{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"dumpster","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCallCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"loopBlockHashUntilLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"loopUntilLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"trash","type":"bytes"}],"name":"store","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testADD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testADDMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testADDRESS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testAND","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBALANCE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBASEFEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBLOCKHASH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBYTE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLDATACOPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLDATALOAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLDATASIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLVALUE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCHAINID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCODECOPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCODESIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCOINBASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testDIFFICULTY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testDIV","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testECAdd","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testECRecover","outputs":[{"internalType":"address","name":"result","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testEQ","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testEXP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testEXTCODESIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGAS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGASLIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGASPRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testISZERO","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testIdentity","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG0","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG4","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMLOAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMSIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMSTORE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMSTORE8","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMUL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMULMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testModExp","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testNOT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testNUMBER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testORIGIN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testRETURNDATACOPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testRETURNDATASIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testRipemd160","outputs":[{"internalType":"bytes20","name":"result","type":"bytes20"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSAR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSDIV","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSELFBALANCE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSGT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testSHA256","outputs":[{"internalType":"bytes32","name":"result","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSHA3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSHL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSHR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSIGNEXTEND","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSLOAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSLT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSSTORE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSUB","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testTIMESTAMP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testXOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/contracts/LoadTester.bin b/contracts/LoadTester.bin index 39b5ed04..8383d7af 100644 --- a/contracts/LoadTester.bin +++ b/contracts/LoadTester.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b50612c04806100206000396000f3fe608060405234801561001057600080fd5b506004361061041d5760003560e01c80637de8c6f81161022b578063bf529ca111610130578063dd9bef60116100b8578063f279ca8111610087578063f279ca811461103a578063f4d1fc611461106a578063f58fc36a1461109a578063f6b0bbf7146110ca578063fde7721c146110fa5761041d565b8063dd9bef6014610f7a578063de97a36314610faa578063e9f9b3f214610fda578063ea5141e61461100a5761041d565b8063ce3cf4ef116100ff578063ce3cf4ef14610e8a578063d117320b14610eba578063d51e7b5b14610eea578063d53ff3fd14610f1a578063d93cd55814610f4a5761041d565b8063bf529ca114610dca578063c360aba614610dfa578063c420eb6114610e2a578063c4bd65d514610e5a5761041d565b8063a271b721116101b3578063b374012b11610182578063b374012b14610cda578063b3d847f214610d0a578063b7b8620714610d3a578063b81c148414610d6a578063bdc875fc14610d9a5761041d565b8063a271b72114610c2c578063a60a108714610c4a578063a645c9c214610c7a578063acaebdf614610caa5761041d565b806391e7b277116101fa57806391e7b27714610b3c57806398456f3e14610b6c5780639a2b7c8114610b9c5780639cce7cf914610bcc578063a18683cb14610bfc5761041d565b80637de8c6f814610a7c57806380947f8014610aac578063880eff3914610adc578063918a5fcd14610b0c5761041d565b80632d34e798116103315780635590c2d9116102b95780636e7f1fe7116102885780636e7f1fe71461098c5780636f099c8d146109bc57806371d91d28146109ec5780637b6e0b0e14610a1c5780637c191d2014610a4c5761041d565b80635590c2d9146108de57806360e13cde1461090e57806363138d4f1461093e578063659bbb4f1461096e5761041d565b80633a425dfc116103005780633a425dfc146107ee57806340fe26621461081e57806344cf3bc71461084e5780634a61af1f1461087e5780634d2c74b3146108ae5761041d565b80632d34e798146107405780633430ec0614610770578063371303c0146107a05780633a411f12146107be5761041d565b806318093b46116103b45780632007332e116103835780632007332e14610650578063219cddeb146106805780632294fc7f146106b05780632871ef85146106e05780632b21ef44146107105761041d565b806318093b461461059057806319b621d6146105c05780631aba07ea146105f05780631de2f343146106205761041d565b80631287a68c116103f05780631287a68c146104e2578063135d52f7146105005780631581cf191461053057806316582150146105605761041d565b8063034aef7114610422578063050082f814610452578063087b4e84146104825780630ba8a73b146104b2575b600080fd5b61043c6004803603810190610437919061238d565b61112a565b60405161044991906123c9565b60405180910390f35b61046c6004803603810190610467919061238d565b611165565b60405161047991906123c9565b60405180910390f35b61049c6004803603810190610497919061238d565b6111a0565b6040516104a991906123c9565b60405180910390f35b6104cc60048036038101906104c7919061238d565b6111da565b6040516104d991906123c9565b60405180910390f35b6104ea611216565b6040516104f791906123c9565b60405180910390f35b61051a6004803603810190610515919061238d565b61121f565b60405161052791906123c9565b60405180910390f35b61054a6004803603810190610545919061238d565b61125b565b60405161055791906123c9565b60405180910390f35b61057a6004803603810190610575919061238d565b611296565b60405161058791906123c9565b60405180910390f35b6105aa60048036038101906105a5919061238d565b6112f1565b6040516105b791906123c9565b60405180910390f35b6105da60048036038101906105d5919061238d565b61132f565b6040516105e791906123c9565b60405180910390f35b61060a6004803603810190610605919061238d565b6113be565b60405161061791906123c9565b60405180910390f35b61063a6004803603810190610635919061238d565b611404565b60405161064791906123c9565b60405180910390f35b61066a6004803603810190610665919061238d565b611442565b60405161067791906123c9565b60405180910390f35b61069a6004803603810190610695919061238d565b61147e565b6040516106a791906123c9565b60405180910390f35b6106ca60048036038101906106c5919061238d565b6114b9565b6040516106d791906123c9565b60405180910390f35b6106fa60048036038101906106f5919061238d565b6114f8565b60405161070791906123c9565b60405180910390f35b61072a6004803603810190610725919061238d565b611533565b60405161073791906123c9565b60405180910390f35b61075a6004803603810190610755919061238d565b61156e565b60405161076791906123c9565b60405180910390f35b61078a6004803603810190610785919061238d565b6115a9565b6040516107979190612474565b60405180910390f35b6107a8611655565b6040516107b591906123c9565b60405180910390f35b6107d860048036038101906107d3919061238d565b611674565b6040516107e591906123c9565b60405180910390f35b6108086004803603810190610803919061238d565b6116b0565b60405161081591906123c9565b60405180910390f35b6108386004803603810190610833919061238d565b6116ec565b60405161084591906123c9565b60405180910390f35b6108686004803603810190610863919061238d565b61172b565b60405161087591906123c9565b60405180910390f35b6108986004803603810190610893919061238d565b611766565b6040516108a591906123c9565b60405180910390f35b6108c860048036038101906108c3919061238d565b6117a4565b6040516108d591906123c9565b60405180910390f35b6108f860048036038101906108f3919061238d565b6117df565b60405161090591906123c9565b60405180910390f35b6109286004803603810190610923919061238d565b611824565b60405161093591906123c9565b60405180910390f35b610958600480360381019061095391906125cb565b611860565b604051610965919061262d565b60405180910390f35b61097661188c565b60405161098391906123c9565b60405180910390f35b6109a660048036038101906109a1919061238d565b6118c8565b6040516109b391906123c9565b60405180910390f35b6109d660048036038101906109d1919061238d565b611906565b6040516109e391906123c9565b60405180910390f35b610a066004803603810190610a01919061238d565b611941565b604051610a1391906123c9565b60405180910390f35b610a366004803603810190610a31919061238d565b61197f565b604051610a4391906123c9565b60405180910390f35b610a666004803603810190610a61919061238d565b6119bb565b604051610a7391906123c9565b60405180910390f35b610a966004803603810190610a91919061238d565b6119f6565b604051610aa391906123c9565b60405180910390f35b610ac66004803603810190610ac1919061238d565b611a32565b604051610ad391906123c9565b60405180910390f35b610af66004803603810190610af1919061238d565b611a8f565b604051610b0391906123c9565b60405180910390f35b610b266004803603810190610b21919061238d565b611ace565b604051610b3391906123c9565b60405180910390f35b610b566004803603810190610b51919061238d565b611b09565b604051610b6391906123c9565b60405180910390f35b610b866004803603810190610b81919061238d565b611b55565b604051610b9391906123c9565b60405180910390f35b610bb66004803603810190610bb1919061238d565b611b95565b604051610bc391906123c9565b60405180910390f35b610be66004803603810190610be191906125cb565b611bd0565b604051610bf39190612474565b60405180910390f35b610c166004803603810190610c1191906125cb565b611c01565b604051610c239190612689565b60405180910390f35b610c34611c83565b604051610c4191906123c9565b60405180910390f35b610c646004803603810190610c5f919061238d565b611cce565b604051610c7191906123c9565b60405180910390f35b610c946004803603810190610c8f919061238d565b611d09565b604051610ca191906123c9565b60405180910390f35b610cc46004803603810190610cbf919061238d565b611d45565b604051610cd191906123c9565b60405180910390f35b610cf46004803603810190610cef9190612704565b611d81565b604051610d0191906123c9565b60405180910390f35b610d246004803603810190610d1f919061238d565b611dcf565b604051610d3191906123c9565b60405180910390f35b610d546004803603810190610d4f919061238d565b611e0a565b604051610d6191906123c9565b60405180910390f35b610d846004803603810190610d7f919061238d565b611e45565b604051610d9191906123c9565b60405180910390f35b610db46004803603810190610daf919061238d565b611e80565b604051610dc191906123c9565b60405180910390f35b610de46004803603810190610ddf919061238d565b611ebb565b604051610df191906123c9565b60405180910390f35b610e146004803603810190610e0f919061238d565b611eff565b604051610e2191906123c9565b60405180910390f35b610e446004803603810190610e3f919061238d565b611f3b565b604051610e5191906123c9565b60405180910390f35b610e746004803603810190610e6f919061238d565b611f76565b604051610e8191906123c9565b60405180910390f35b610ea46004803603810190610e9f919061238d565b611fb4565b604051610eb191906123c9565b60405180910390f35b610ed46004803603810190610ecf919061238d565b611ff1565b604051610ee191906123c9565b60405180910390f35b610f046004803603810190610eff919061238d565b61202b565b604051610f1191906123c9565b60405180910390f35b610f346004803603810190610f2f919061238d565b612067565b604051610f4191906123c9565b60405180910390f35b610f646004803603810190610f5f919061238d565b6120a3565b604051610f7191906123c9565b60405180910390f35b610f946004803603810190610f8f919061238d565b6120fe565b604051610fa191906123c9565b60405180910390f35b610fc46004803603810190610fbf919061238d565b612140565b604051610fd191906123c9565b60405180910390f35b610ff46004803603810190610fef919061238d565b61217c565b60405161100191906123c9565b60405180910390f35b611024600480360381019061101f919061238d565b6121b9565b60405161103191906123c9565b60405180910390f35b611054600480360381019061104f919061238d565b6121fb565b60405161106191906123c9565b60405180910390f35b611084600480360381019061107f919061238d565b612237565b60405161109191906123c9565b60405180910390f35b6110b460048036038101906110af919061238d565b612275565b6040516110c191906123c9565b60405180910390f35b6110e460048036038101906110df91906125cb565b6122b4565b6040516110f1919061278c565b60405180910390f35b611114600480360381019061110f919061238d565b6122e6565b60405161112191906123c9565b60405180910390f35b6000611134611655565b50600065deadbeef003690506000805b8481101561115a57369150600181019050611144565b505080915050919050565b600061116f611655565b50600065deadbeef003290506000805b848110156111955732915060018101905061117f565b505080915050919050565b60006111aa611655565b50600065deadbeef0052905060005b838110156111d057816000526001810190506111b9565b5080915050919050565b60006111e4611655565b50600065deadbeef0001905060005b8381101561120c576000820191506001810190506111f3565b5080915050919050565b60008054905090565b6000611229611655565b50600065deadbeef0017905060005b8381101561125157600082179150600181019050611238565b5080915050919050565b6000611265611655565b50600065deadbeef003490506000805b8481101561128b57349150600181019050611275565b505080915050919050565b60006112a0611655565b50600065deadbeef0006905060005b838110156112e7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820691506001810190506112af565b5080915050919050565b60006112fb611655565b50600065deadbeef001390506000805b848110156113245760018313915060018101905061130b565b505080915050919050565b6000611339611655565b50600065deadbeef002090507fffffffff000000000000000000000000000000000000000000000000000000006000526000805b84811015611387576004600020915060018101905061136d565b507f29045a592007d0c246ef02c2223570da9522d0cf0f73282c79a1bc8f0bb2c23881146113b457600091505b5080915050919050565b60006113c8611655565b50600065deadbeef00a490508060105260005b838110156113fa576004600360028360066010a46001810190506113db565b5080915050919050565b600061140e611655565b50600065deadbeef001a90506000805b84811015611437578260001a915060018101905061141e565b505080915050919050565b600061144c611655565b50600065deadbeef001b905060005b83811015611474578160001b915060018101905061145b565b5080915050919050565b6000611488611655565b50600065deadbeef004290506000805b848110156114ae57429150600181019050611498565b505080915050919050565b60006114c3611655565b50600065deadbeef0031905060003060005b858110156114ec57813192506001810190506114d5565b50505080915050919050565b6000611502611655565b50600065deadbeef004890506000805b8481101561152857489150600181019050611512565b505080915050919050565b600061153d611655565b50600065deadbeef003d90506000805b84811015611563573d915060018101905061154d565b505080915050919050565b6000611578611655565b50600065deadbeef004390506000805b8481101561159e57439150600181019050611588565b505080915050919050565b600281815481106115b957600080fd5b9060005260206000200160009150905080546115d4906127d6565b80601f0160208091040260200160405190810160405280929190818152602001828054611600906127d6565b801561164d5780601f106116225761010080835404028352916020019161164d565b820191906000526020600020905b81548152906001019060200180831161163057829003601f168201915b505050505081565b600060016000546116669190612836565b600081905550600054905090565b600061167e611655565b50600065deadbeef0004905060005b838110156116a65760018204915060018101905061168d565b5080915050919050565b60006116ba611655565b50600065deadbeef0037905060005b838110156116e2576020600080376001810190506116c9565b5080915050919050565b60006116f6611655565b50600065deadbeef00a090508060105260005b838110156117215760066010a0600181019050611709565b5080915050919050565b6000611735611655565b50600065deadbeef003390506000805b8481101561175b57339150600181019050611745565b505080915050919050565b6000611770611655565b50600065deadbeef0053905060005b8381101561179a5763deadbeef60005260018101905061177f565b5080915050919050565b60006117ae611655565b50600065deadbeef003a90506000805b848110156117d4573a91506001810190506117be565b505080915050919050565b60006117e9611655565b50600065deadbeef0051905060008160005260005b848110156118165760005191506001810190506117fe565b508091505080915050919050565b600061182e611655565b50600065deadbeef001d905060005b83811015611856578160001d915060018101905061183d565b5080915050919050565b600080600290506020830183518360208183856000885af18061188257600080fd5b5050505050919050565b6000611896611655565b505b6103e85a11156118c05760018060008282546118b49190612836565b92505081905550611898565b600154905090565b60006118d2611655565b50600065deadbeef001090506000805b848110156118fb578260011091506001810190506118e2565b505080915050919050565b6000611910611655565b50600065deadbeef004490506000805b8481101561193657449150600181019050611920565b505080915050919050565b600061194b611655565b50600065deadbeef001190506000805b848110156119745760018311915060018101905061195b565b505080915050919050565b6000611989611655565b50600065deadbeef003e905060005b838110156119b15760206000803e600181019050611998565b5080915050919050565b60006119c5611655565b50600065deadbeef004590506000805b848110156119eb574591506001810190506119d5565b505080915050919050565b6000611a00611655565b50600065deadbeef0002905060005b83811015611a2857600182029150600181019050611a0f565b5080915050919050565b6000611a3c611655565b50600065deadbeef0008905060005b83811015611a85577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600083089150600181019050611a4b565b5080915050919050565b6000611a99611655565b50600065deadbeef005490508060005560005b83811015611ac4576000549150600181019050611aac565b5080915050919050565b6000611ad8611655565b50600065deadbeef005a90506000805b84811015611afe575a9150600181019050611ae8565b505080915050919050565b6000611b13611655565b50600065deadbeef0019905060005b83811015611b395781199150600181019050611b22565b5065deadbeef00198114611b4c57801990505b80915050919050565b6000611b5f611655565b50600065deadbeef00a190508060105260005b83811015611b8b578060066010a1600181019050611b72565b5080915050919050565b6000611b9f611655565b50600065deadbeef0016905060005b83811015611bc6578182169150600181019050611bae565b5080915050919050565b6060600060049050602083018351604051818183856000885af180611bf457600080fd5b8195505050505050919050565b60006080825114611c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3e906128c7565b60405180910390fd5b600060019050602083016020810151601f1a602082015260206040516080836000865af180611c7557600080fd5b604051519350505050919050565b6000611c8d611655565b505b6103e85a1115611cc6576001806000828254611cab9190612836565b9250508190555043600154611cc09190612916565b50611c8f565b600154905090565b6000611cd8611655565b50600065deadbeef004690506000805b84811015611cfe57469150600181019050611ce8565b505080915050919050565b6000611d13611655565b50600065deadbeef0005905060005b83811015611d3b57600182059150600181019050611d22565b5080915050919050565b6000611d4f611655565b50600065deadbeef0039905060005b83811015611d7757602060008039600181019050611d5e565b5080915050919050565b60006002838390918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611dc0929190612afe565b50600280549050905092915050565b6000611dd9611655565b50600065deadbeef005990506000805b84811015611dff57599150600181019050611de9565b505080915050919050565b6000611e14611655565b50600065deadbeef003890506000805b84811015611e3a57389150600181019050611e24565b505080915050919050565b6000611e4f611655565b50600065deadbeef004190506000805b84811015611e7557419150600181019050611e5f565b505080915050919050565b6000611e8a611655565b50600065deadbeef003090506000805b84811015611eb057309150600181019050611e9a565b505080915050919050565b6000611ec5611655565b50600065deadbeef00a390508060105260005b83811015611ef557600360028260066010a3600181019050611ed8565b5080915050919050565b6000611f09611655565b50600065deadbeef000b905060005b83811015611f31578160200b9150600181019050611f18565b5080915050919050565b6000611f45611655565b50600065deadbeef004790506000805b84811015611f6b57479150600181019050611f55565b505080915050919050565b6000611f80611655565b50600065deadbeef001c90506000805b84811015611fa9578260001c9250600181019050611f90565b505080915050919050565b6000611fbe611655565b50600065deadbeef003590506000805b84811015611fe6576000359150600181019050611fce565b505080915050919050565b6000611ffb611655565b50600065deadbeef0055905060005b83811015612021578160005560018101905061200a565b5080915050919050565b6000612035611655565b50600065deadbeef0018905060005b8381101561205d57600082189150600181019050612044565b5080915050919050565b6000612071611655565b50600065deadbeef0003905060005b8381101561209957600082039150600181019050612080565b5080915050919050565b60006120ad611655565b50600065deadbeef0007905060005b838110156120f4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820791506001810190506120bc565b5080915050919050565b6000612108611655565b50600065deadbeef00a290508060105260005b838110156121365760028160066010a260018101905061211b565b5080915050919050565b600061214a611655565b50600065deadbeef000a905060005b83811015612172576001820a9150600181019050612159565b5080915050919050565b6000612186611655565b50600065deadbeef001490506000805b848110156121ae578283149150600181019050612196565b505080915050919050565b60006121c3611655565b50600065deadbeef0040905060006001430360005b858110156121ef57814092506001810190506121d8565b50505080915050919050565b6000612205611655565b50600065deadbeef001590506000805b8481101561222c5782159150600181019050612215565b505080915050919050565b6000612241611655565b50600065deadbeef001290506000805b8481101561226a57826001129150600181019050612251565b505080915050919050565b600061227f611655565b50600065deadbeef003b905060003060005b858110156122a857813b9250600181019050612291565b50505080915050919050565b6000806003905060208301835160405160148183856000885af1806122d857600080fd5b815195505050505050919050565b60006122f0611655565b50600065deadbeef0009905060005b83811015612339577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001830991506001810190506122ff565b5080915050919050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61236a81612357565b811461237557600080fd5b50565b60008135905061238781612361565b92915050565b6000602082840312156123a3576123a261234d565b5b60006123b184828501612378565b91505092915050565b6123c381612357565b82525050565b60006020820190506123de60008301846123ba565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561241e578082015181840152602081019050612403565b60008484015250505050565b6000601f19601f8301169050919050565b6000612446826123e4565b61245081856123ef565b9350612460818560208601612400565b6124698161242a565b840191505092915050565b6000602082019050818103600083015261248e818461243b565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6124d88261242a565b810181811067ffffffffffffffff821117156124f7576124f66124a0565b5b80604052505050565b600061250a612343565b905061251682826124cf565b919050565b600067ffffffffffffffff821115612536576125356124a0565b5b61253f8261242a565b9050602081019050919050565b82818337600083830152505050565b600061256e6125698461251b565b612500565b90508281526020810184848401111561258a5761258961249b565b5b61259584828561254c565b509392505050565b600082601f8301126125b2576125b1612496565b5b81356125c284826020860161255b565b91505092915050565b6000602082840312156125e1576125e061234d565b5b600082013567ffffffffffffffff8111156125ff576125fe612352565b5b61260b8482850161259d565b91505092915050565b6000819050919050565b61262781612614565b82525050565b6000602082019050612642600083018461261e565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061267382612648565b9050919050565b61268381612668565b82525050565b600060208201905061269e600083018461267a565b92915050565b600080fd5b600080fd5b60008083601f8401126126c4576126c3612496565b5b8235905067ffffffffffffffff8111156126e1576126e06126a4565b5b6020830191508360018202830111156126fd576126fc6126a9565b5b9250929050565b6000806020838503121561271b5761271a61234d565b5b600083013567ffffffffffffffff81111561273957612738612352565b5b612745858286016126ae565b92509250509250929050565b60007fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b61278681612751565b82525050565b60006020820190506127a1600083018461277d565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806127ee57607f821691505b602082108103612801576128006127a7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061284182612357565b915061284c83612357565b925082820190508082111561286457612863612807565b5b92915050565b600082825260208201905092915050565b7f496e76616c696420696e7075742064617461206c656e6774682e000000000000600082015250565b60006128b1601a8361286a565b91506128bc8261287b565b602082019050919050565b600060208201905081810360008301526128e0816128a4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061292182612357565b915061292c83612357565b92508261293c5761293b6128e7565b5b828206905092915050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026129b47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612977565b6129be8683612977565b95508019841693508086168417925050509392505050565b6000819050919050565b60006129fb6129f66129f184612357565b6129d6565b612357565b9050919050565b6000819050919050565b612a15836129e0565b612a29612a2182612a02565b848454612984565b825550505050565b600090565b612a3e612a31565b612a49818484612a0c565b505050565b5b81811015612a6d57612a62600082612a36565b600181019050612a4f565b5050565b601f821115612ab257612a8381612952565b612a8c84612967565b81016020851015612a9b578190505b612aaf612aa785612967565b830182612a4e565b50505b505050565b600082821c905092915050565b6000612ad560001984600802612ab7565b1980831691505092915050565b6000612aee8383612ac4565b9150826002028217905092915050565b612b088383612947565b67ffffffffffffffff811115612b2157612b206124a0565b5b612b2b82546127d6565b612b36828285612a71565b6000601f831160018114612b655760008415612b53578287013590505b612b5d8582612ae2565b865550612bc5565b601f198416612b7386612952565b60005b82811015612b9b57848901358255600182019150602085019450602081019050612b76565b86831015612bb85784890135612bb4601f891682612ac4565b8355505b6001600288020188555050505b5050505050505056fea2646970667358221220224f9cc55b756f70a556b24e75bc7fbd949d95f68d437b6b711c6f3d23cea5b564736f6c63430008130033 \ No newline at end of file +608060405234801561001057600080fd5b50612d87806100206000396000f3fe608060405234801561001057600080fd5b50600436106104335760003560e01c80637de8c6f811610236578063bf529ca11161013b578063dd9bef60116100c3578063f279ca8111610087578063f279ca81146110b0578063f4d1fc61146110e0578063f58fc36a14611110578063f6b0bbf714611140578063fde7721c1461117057610433565b8063dd9bef6014610fc0578063de97a36314610ff0578063e9f9b3f214611020578063ea5141e614611050578063edf003cf1461108057610433565b8063ce3cf4ef1161010a578063ce3cf4ef14610ed0578063d117320b14610f00578063d51e7b5b14610f30578063d53ff3fd14610f60578063d93cd55814610f9057610433565b8063bf529ca114610e10578063c360aba614610e40578063c420eb6114610e70578063c4bd65d514610ea057610433565b8063a271b721116101be578063b374012b1161018d578063b374012b14610d20578063b3d847f214610d50578063b7b8620714610d80578063b81c148414610db0578063bdc875fc14610de057610433565b8063a271b72114610c72578063a60a108714610c90578063a645c9c214610cc0578063acaebdf614610cf057610433565b806391e7b2771161020557806391e7b27714610b8257806398456f3e14610bb25780639a2b7c8114610be25780639cce7cf914610c12578063a18683cb14610c4257610433565b80637de8c6f814610ac257806380947f8014610af2578063880eff3914610b22578063918a5fcd14610b5257610433565b80633430ec061161033c57806360e13cde116102c45780636e7f1fe7116102935780636e7f1fe7146109d25780636f099c8d14610a0257806371d91d2814610a325780637b6e0b0e14610a625780637c191d2014610a9257610433565b806360e13cde14610924578063613d0a821461095457806363138d4f14610984578063659bbb4f146109b457610433565b806340fe26621161030b57806340fe26621461083457806344cf3bc7146108645780634a61af1f146108945780634d2c74b3146108c45780635590c2d9146108f457610433565b80633430ec0614610786578063371303c0146107b65780633a411f12146107d45780633a425dfc1461080457610433565b806319b621d6116103bf578063219cddeb1161038e578063219cddeb146106965780632294fc7f146106c65780632871ef85146106f65780632b21ef44146107265780632d34e7981461075657610433565b806319b621d6146105d65780631aba07ea146106065780631de2f343146106365780632007332e1461066657610433565b80631287a68c116104065780631287a68c146104f8578063135d52f7146105165780631581cf1914610546578063165821501461057657806318093b46146105a657610433565b8063034aef7114610438578063050082f814610468578063087b4e84146104985780630ba8a73b146104c8575b600080fd5b610452600480360381019061044d91906124a4565b6111a0565b60405161045f91906124e0565b60405180910390f35b610482600480360381019061047d91906124a4565b6111db565b60405161048f91906124e0565b60405180910390f35b6104b260048036038101906104ad91906124a4565b611216565b6040516104bf91906124e0565b60405180910390f35b6104e260048036038101906104dd91906124a4565b611250565b6040516104ef91906124e0565b60405180910390f35b61050061128c565b60405161050d91906124e0565b60405180910390f35b610530600480360381019061052b91906124a4565b611295565b60405161053d91906124e0565b60405180910390f35b610560600480360381019061055b91906124a4565b6112d1565b60405161056d91906124e0565b60405180910390f35b610590600480360381019061058b91906124a4565b61130c565b60405161059d91906124e0565b60405180910390f35b6105c060048036038101906105bb91906124a4565b611367565b6040516105cd91906124e0565b60405180910390f35b6105f060048036038101906105eb91906124a4565b6113a5565b6040516105fd91906124e0565b60405180910390f35b610620600480360381019061061b91906124a4565b611434565b60405161062d91906124e0565b60405180910390f35b610650600480360381019061064b91906124a4565b61147a565b60405161065d91906124e0565b60405180910390f35b610680600480360381019061067b91906124a4565b6114b8565b60405161068d91906124e0565b60405180910390f35b6106b060048036038101906106ab91906124a4565b6114f4565b6040516106bd91906124e0565b60405180910390f35b6106e060048036038101906106db91906124a4565b61152f565b6040516106ed91906124e0565b60405180910390f35b610710600480360381019061070b91906124a4565b61156e565b60405161071d91906124e0565b60405180910390f35b610740600480360381019061073b91906124a4565b6115a9565b60405161074d91906124e0565b60405180910390f35b610770600480360381019061076b91906124a4565b6115e4565b60405161077d91906124e0565b60405180910390f35b6107a0600480360381019061079b91906124a4565b61161f565b6040516107ad919061258b565b60405180910390f35b6107be6116cb565b6040516107cb91906124e0565b60405180910390f35b6107ee60048036038101906107e991906124a4565b6116ea565b6040516107fb91906124e0565b60405180910390f35b61081e600480360381019061081991906124a4565b611726565b60405161082b91906124e0565b60405180910390f35b61084e600480360381019061084991906124a4565b611762565b60405161085b91906124e0565b60405180910390f35b61087e600480360381019061087991906124a4565b6117a1565b60405161088b91906124e0565b60405180910390f35b6108ae60048036038101906108a991906124a4565b6117dc565b6040516108bb91906124e0565b60405180910390f35b6108de60048036038101906108d991906124a4565b61181a565b6040516108eb91906124e0565b60405180910390f35b61090e600480360381019061090991906124a4565b611855565b60405161091b91906124e0565b60405180910390f35b61093e600480360381019061093991906124a4565b61189a565b60405161094b91906124e0565b60405180910390f35b61096e600480360381019061096991906126e2565b6118d6565b60405161097b919061258b565b60405180910390f35b61099e600480360381019061099991906126e2565b611908565b6040516109ab9190612744565b60405180910390f35b6109bc611934565b6040516109c991906124e0565b60405180910390f35b6109ec60048036038101906109e791906124a4565b611970565b6040516109f991906124e0565b60405180910390f35b610a1c6004803603810190610a1791906124a4565b6119ae565b604051610a2991906124e0565b60405180910390f35b610a4c6004803603810190610a4791906124a4565b6119e9565b604051610a5991906124e0565b60405180910390f35b610a7c6004803603810190610a7791906124a4565b611a27565b604051610a8991906124e0565b60405180910390f35b610aac6004803603810190610aa791906124a4565b611a63565b604051610ab991906124e0565b60405180910390f35b610adc6004803603810190610ad791906124a4565b611a9e565b604051610ae991906124e0565b60405180910390f35b610b0c6004803603810190610b0791906124a4565b611ada565b604051610b1991906124e0565b60405180910390f35b610b3c6004803603810190610b3791906124a4565b611b37565b604051610b4991906124e0565b60405180910390f35b610b6c6004803603810190610b6791906124a4565b611b76565b604051610b7991906124e0565b60405180910390f35b610b9c6004803603810190610b9791906124a4565b611bb1565b604051610ba991906124e0565b60405180910390f35b610bcc6004803603810190610bc791906124a4565b611bfd565b604051610bd991906124e0565b60405180910390f35b610bfc6004803603810190610bf791906124a4565b611c3d565b604051610c0991906124e0565b60405180910390f35b610c2c6004803603810190610c2791906126e2565b611c78565b604051610c39919061258b565b60405180910390f35b610c5c6004803603810190610c5791906126e2565b611ca9565b604051610c6991906127a0565b60405180910390f35b610c7a611d2b565b604051610c8791906124e0565b60405180910390f35b610caa6004803603810190610ca591906124a4565b611d76565b604051610cb791906124e0565b60405180910390f35b610cda6004803603810190610cd591906124a4565b611db1565b604051610ce791906124e0565b60405180910390f35b610d0a6004803603810190610d0591906124a4565b611ded565b604051610d1791906124e0565b60405180910390f35b610d3a6004803603810190610d35919061281b565b611e29565b604051610d4791906124e0565b60405180910390f35b610d6a6004803603810190610d6591906124a4565b611e77565b604051610d7791906124e0565b60405180910390f35b610d9a6004803603810190610d9591906124a4565b611eb2565b604051610da791906124e0565b60405180910390f35b610dca6004803603810190610dc591906124a4565b611eed565b604051610dd791906124e0565b60405180910390f35b610dfa6004803603810190610df591906124a4565b611f28565b604051610e0791906124e0565b60405180910390f35b610e2a6004803603810190610e2591906124a4565b611f63565b604051610e3791906124e0565b60405180910390f35b610e5a6004803603810190610e5591906124a4565b611fa7565b604051610e6791906124e0565b60405180910390f35b610e8a6004803603810190610e8591906124a4565b611fe3565b604051610e9791906124e0565b60405180910390f35b610eba6004803603810190610eb591906124a4565b61201e565b604051610ec791906124e0565b60405180910390f35b610eea6004803603810190610ee591906124a4565b61205c565b604051610ef791906124e0565b60405180910390f35b610f1a6004803603810190610f1591906124a4565b612099565b604051610f2791906124e0565b60405180910390f35b610f4a6004803603810190610f4591906124a4565b6120d3565b604051610f5791906124e0565b60405180910390f35b610f7a6004803603810190610f7591906124a4565b61210f565b604051610f8791906124e0565b60405180910390f35b610faa6004803603810190610fa591906124a4565b61214b565b604051610fb791906124e0565b60405180910390f35b610fda6004803603810190610fd591906124a4565b6121a6565b604051610fe791906124e0565b60405180910390f35b61100a600480360381019061100591906124a4565b6121e8565b60405161101791906124e0565b60405180910390f35b61103a600480360381019061103591906124a4565b612224565b60405161104791906124e0565b60405180910390f35b61106a600480360381019061106591906124a4565b612261565b60405161107791906124e0565b60405180910390f35b61109a600480360381019061109591906126e2565b6122a3565b6040516110a7919061258b565b60405180910390f35b6110ca60048036038101906110c591906124a4565b612312565b6040516110d791906124e0565b60405180910390f35b6110fa60048036038101906110f591906124a4565b61234e565b60405161110791906124e0565b60405180910390f35b61112a600480360381019061112591906124a4565b61238c565b60405161113791906124e0565b60405180910390f35b61115a600480360381019061115591906126e2565b6123cb565b60405161116791906128a3565b60405180910390f35b61118a600480360381019061118591906124a4565b6123fd565b60405161119791906124e0565b60405180910390f35b60006111aa6116cb565b50600065deadbeef003690506000805b848110156111d0573691506001810190506111ba565b505080915050919050565b60006111e56116cb565b50600065deadbeef003290506000805b8481101561120b573291506001810190506111f5565b505080915050919050565b60006112206116cb565b50600065deadbeef0052905060005b83811015611246578160005260018101905061122f565b5080915050919050565b600061125a6116cb565b50600065deadbeef0001905060005b8381101561128257600082019150600181019050611269565b5080915050919050565b60008054905090565b600061129f6116cb565b50600065deadbeef0017905060005b838110156112c7576000821791506001810190506112ae565b5080915050919050565b60006112db6116cb565b50600065deadbeef003490506000805b84811015611301573491506001810190506112eb565b505080915050919050565b60006113166116cb565b50600065deadbeef0006905060005b8381101561135d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82069150600181019050611325565b5080915050919050565b60006113716116cb565b50600065deadbeef001390506000805b8481101561139a57600183139150600181019050611381565b505080915050919050565b60006113af6116cb565b50600065deadbeef002090507fffffffff000000000000000000000000000000000000000000000000000000006000526000805b848110156113fd57600460002091506001810190506113e3565b507f29045a592007d0c246ef02c2223570da9522d0cf0f73282c79a1bc8f0bb2c238811461142a57600091505b5080915050919050565b600061143e6116cb565b50600065deadbeef00a490508060105260005b83811015611470576004600360028360066010a4600181019050611451565b5080915050919050565b60006114846116cb565b50600065deadbeef001a90506000805b848110156114ad578260001a9150600181019050611494565b505080915050919050565b60006114c26116cb565b50600065deadbeef001b905060005b838110156114ea578160001b91506001810190506114d1565b5080915050919050565b60006114fe6116cb565b50600065deadbeef004290506000805b848110156115245742915060018101905061150e565b505080915050919050565b60006115396116cb565b50600065deadbeef0031905060003060005b85811015611562578131925060018101905061154b565b50505080915050919050565b60006115786116cb565b50600065deadbeef004890506000805b8481101561159e57489150600181019050611588565b505080915050919050565b60006115b36116cb565b50600065deadbeef003d90506000805b848110156115d9573d91506001810190506115c3565b505080915050919050565b60006115ee6116cb565b50600065deadbeef004390506000805b84811015611614574391506001810190506115fe565b505080915050919050565b6002818154811061162f57600080fd5b90600052602060002001600091509050805461164a906128ed565b80601f0160208091040260200160405190810160405280929190818152602001828054611676906128ed565b80156116c35780601f10611698576101008083540402835291602001916116c3565b820191906000526020600020905b8154815290600101906020018083116116a657829003601f168201915b505050505081565b600060016000546116dc919061294d565b600081905550600054905090565b60006116f46116cb565b50600065deadbeef0004905060005b8381101561171c57600182049150600181019050611703565b5080915050919050565b60006117306116cb565b50600065deadbeef0037905060005b838110156117585760206000803760018101905061173f565b5080915050919050565b600061176c6116cb565b50600065deadbeef00a090508060105260005b838110156117975760066010a060018101905061177f565b5080915050919050565b60006117ab6116cb565b50600065deadbeef003390506000805b848110156117d1573391506001810190506117bb565b505080915050919050565b60006117e66116cb565b50600065deadbeef0053905060005b838110156118105763deadbeef6000526001810190506117f5565b5080915050919050565b60006118246116cb565b50600065deadbeef003a90506000805b8481101561184a573a9150600181019050611834565b505080915050919050565b600061185f6116cb565b50600065deadbeef0051905060008160005260005b8481101561188c576000519150600181019050611874565b508091505080915050919050565b60006118a46116cb565b50600065deadbeef001d905060005b838110156118cc578160001d91506001810190506118b3565b5080915050919050565b606060006005905060208301835160405160208183856000885af1806118fb57600080fd5b8195505050505050919050565b600080600290506020830183518360208183856000885af18061192a57600080fd5b5050505050919050565b600061193e6116cb565b505b6103e85a111561196857600180600082825461195c919061294d565b92505081905550611940565b600154905090565b600061197a6116cb565b50600065deadbeef001090506000805b848110156119a35782600110915060018101905061198a565b505080915050919050565b60006119b86116cb565b50600065deadbeef004490506000805b848110156119de574491506001810190506119c8565b505080915050919050565b60006119f36116cb565b50600065deadbeef001190506000805b84811015611a1c57600183119150600181019050611a03565b505080915050919050565b6000611a316116cb565b50600065deadbeef003e905060005b83811015611a595760206000803e600181019050611a40565b5080915050919050565b6000611a6d6116cb565b50600065deadbeef004590506000805b84811015611a9357459150600181019050611a7d565b505080915050919050565b6000611aa86116cb565b50600065deadbeef0002905060005b83811015611ad057600182029150600181019050611ab7565b5080915050919050565b6000611ae46116cb565b50600065deadbeef0008905060005b83811015611b2d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600083089150600181019050611af3565b5080915050919050565b6000611b416116cb565b50600065deadbeef005490508060005560005b83811015611b6c576000549150600181019050611b54565b5080915050919050565b6000611b806116cb565b50600065deadbeef005a90506000805b84811015611ba6575a9150600181019050611b90565b505080915050919050565b6000611bbb6116cb565b50600065deadbeef0019905060005b83811015611be15781199150600181019050611bca565b5065deadbeef00198114611bf457801990505b80915050919050565b6000611c076116cb565b50600065deadbeef00a190508060105260005b83811015611c33578060066010a1600181019050611c1a565b5080915050919050565b6000611c476116cb565b50600065deadbeef0016905060005b83811015611c6e578182169150600181019050611c56565b5080915050919050565b6060600060049050602083018351604051818183856000885af180611c9c57600080fd5b8195505050505050919050565b60006080825114611cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce6906129de565b60405180910390fd5b600060019050602083016020810151601f1a602082015260206040516080836000865af180611d1d57600080fd5b604051519350505050919050565b6000611d356116cb565b505b6103e85a1115611d6e576001806000828254611d53919061294d565b9250508190555043600154611d689190612a2d565b50611d37565b600154905090565b6000611d806116cb565b50600065deadbeef004690506000805b84811015611da657469150600181019050611d90565b505080915050919050565b6000611dbb6116cb565b50600065deadbeef0005905060005b83811015611de357600182059150600181019050611dca565b5080915050919050565b6000611df76116cb565b50600065deadbeef0039905060005b83811015611e1f57602060008039600181019050611e06565b5080915050919050565b60006002838390918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611e68929190612c15565b50600280549050905092915050565b6000611e816116cb565b50600065deadbeef005990506000805b84811015611ea757599150600181019050611e91565b505080915050919050565b6000611ebc6116cb565b50600065deadbeef003890506000805b84811015611ee257389150600181019050611ecc565b505080915050919050565b6000611ef76116cb565b50600065deadbeef004190506000805b84811015611f1d57419150600181019050611f07565b505080915050919050565b6000611f326116cb565b50600065deadbeef003090506000805b84811015611f5857309150600181019050611f42565b505080915050919050565b6000611f6d6116cb565b50600065deadbeef00a390508060105260005b83811015611f9d57600360028260066010a3600181019050611f80565b5080915050919050565b6000611fb16116cb565b50600065deadbeef000b905060005b83811015611fd9578160200b9150600181019050611fc0565b5080915050919050565b6000611fed6116cb565b50600065deadbeef004790506000805b8481101561201357479150600181019050611ffd565b505080915050919050565b60006120286116cb565b50600065deadbeef001c90506000805b84811015612051578260001c9250600181019050612038565b505080915050919050565b60006120666116cb565b50600065deadbeef003590506000805b8481101561208e576000359150600181019050612076565b505080915050919050565b60006120a36116cb565b50600065deadbeef0055905060005b838110156120c957816000556001810190506120b2565b5080915050919050565b60006120dd6116cb565b50600065deadbeef0018905060005b83811015612105576000821891506001810190506120ec565b5080915050919050565b60006121196116cb565b50600065deadbeef0003905060005b8381101561214157600082039150600181019050612128565b5080915050919050565b60006121556116cb565b50600065deadbeef0007905060005b8381101561219c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82079150600181019050612164565b5080915050919050565b60006121b06116cb565b50600065deadbeef00a290508060105260005b838110156121de5760028160066010a26001810190506121c3565b5080915050919050565b60006121f26116cb565b50600065deadbeef000a905060005b8381101561221a576001820a9150600181019050612201565b5080915050919050565b600061222e6116cb565b50600065deadbeef001490506000805b8481101561225657828314915060018101905061223e565b505080915050919050565b600061226b6116cb565b50600065deadbeef0040905060006001430360005b858110156122975781409250600181019050612280565b50505080915050919050565b606060808251146122e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e090612d31565b60405180910390fd5b60006006905060208301835160408482846000875af18061230957600080fd5b50505050919050565b600061231c6116cb565b50600065deadbeef001590506000805b84811015612343578215915060018101905061232c565b505080915050919050565b60006123586116cb565b50600065deadbeef001290506000805b8481101561238157826001129150600181019050612368565b505080915050919050565b60006123966116cb565b50600065deadbeef003b905060003060005b858110156123bf57813b92506001810190506123a8565b50505080915050919050565b6000806003905060208301835160405160148183856000885af1806123ef57600080fd5b815195505050505050919050565b60006124076116cb565b50600065deadbeef0009905060005b83811015612450577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600183099150600181019050612416565b5080915050919050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6124818161246e565b811461248c57600080fd5b50565b60008135905061249e81612478565b92915050565b6000602082840312156124ba576124b9612464565b5b60006124c88482850161248f565b91505092915050565b6124da8161246e565b82525050565b60006020820190506124f560008301846124d1565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561253557808201518184015260208101905061251a565b60008484015250505050565b6000601f19601f8301169050919050565b600061255d826124fb565b6125678185612506565b9350612577818560208601612517565b61258081612541565b840191505092915050565b600060208201905081810360008301526125a58184612552565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6125ef82612541565b810181811067ffffffffffffffff8211171561260e5761260d6125b7565b5b80604052505050565b600061262161245a565b905061262d82826125e6565b919050565b600067ffffffffffffffff82111561264d5761264c6125b7565b5b61265682612541565b9050602081019050919050565b82818337600083830152505050565b600061268561268084612632565b612617565b9050828152602081018484840111156126a1576126a06125b2565b5b6126ac848285612663565b509392505050565b600082601f8301126126c9576126c86125ad565b5b81356126d9848260208601612672565b91505092915050565b6000602082840312156126f8576126f7612464565b5b600082013567ffffffffffffffff81111561271657612715612469565b5b612722848285016126b4565b91505092915050565b6000819050919050565b61273e8161272b565b82525050565b60006020820190506127596000830184612735565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061278a8261275f565b9050919050565b61279a8161277f565b82525050565b60006020820190506127b56000830184612791565b92915050565b600080fd5b600080fd5b60008083601f8401126127db576127da6125ad565b5b8235905067ffffffffffffffff8111156127f8576127f76127bb565b5b602083019150836001820283011115612814576128136127c0565b5b9250929050565b6000806020838503121561283257612831612464565b5b600083013567ffffffffffffffff8111156128505761284f612469565b5b61285c858286016127c5565b92509250509250929050565b60007fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b61289d81612868565b82525050565b60006020820190506128b86000830184612894565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061290557607f821691505b602082108103612918576129176128be565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129588261246e565b91506129638361246e565b925082820190508082111561297b5761297a61291e565b5b92915050565b600082825260208201905092915050565b7f496e76616c696420696e7075742064617461206c656e6774682e000000000000600082015250565b60006129c8601a83612981565b91506129d382612992565b602082019050919050565b600060208201905081810360008301526129f7816129bb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a388261246e565b9150612a438361246e565b925082612a5357612a526129fe565b5b828206905092915050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612acb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612a8e565b612ad58683612a8e565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612b12612b0d612b088461246e565b612aed565b61246e565b9050919050565b6000819050919050565b612b2c83612af7565b612b40612b3882612b19565b848454612a9b565b825550505050565b600090565b612b55612b48565b612b60818484612b23565b505050565b5b81811015612b8457612b79600082612b4d565b600181019050612b66565b5050565b601f821115612bc957612b9a81612a69565b612ba384612a7e565b81016020851015612bb2578190505b612bc6612bbe85612a7e565b830182612b65565b50505b505050565b600082821c905092915050565b6000612bec60001984600802612bce565b1980831691505092915050565b6000612c058383612bdb565b9150826002028217905092915050565b612c1f8383612a5e565b67ffffffffffffffff811115612c3857612c376125b7565b5b612c4282546128ed565b612c4d828285612b88565b6000601f831160018114612c7c5760008415612c6a578287013590505b612c748582612bf9565b865550612cdc565b601f198416612c8a86612a69565b60005b82811015612cb257848901358255600182019150602085019450602081019050612c8d565b86831015612ccf5784890135612ccb601f891682612bdb565b8355505b6001600288020188555050505b50505050505050565b7f496e76616c696420696e707574206c656e677468000000000000000000000000600082015250565b6000612d1b601483612981565b9150612d2682612ce5565b602082019050919050565b60006020820190508181036000830152612d4a81612d0e565b905091905056fea26469706673582212201b540fbef3fb329c62d3c5ab4a168060872273585e8bfe8b9988c68073c175d464736f6c63430008130033 \ No newline at end of file diff --git a/contracts/LoadTester.sol b/contracts/LoadTester.sol index 7aa242f8..9fb7050f 100644 --- a/contracts/LoadTester.sol +++ b/contracts/LoadTester.sol @@ -842,4 +842,37 @@ contract LoadTester { result := outputPtr } } + + function testModExp(bytes memory inputData) public returns (bytes memory result) { + address MOD_EXP_PRECOMPILED_CONTRACT = 0x0000000000000000000000000000000000000005; + + assembly { + let inputPtr := add(inputData, 0x20) // Ignore the length prefix of the inputData bytes array + let inputLength := mload(inputData) + + let outputPtr := mload(0x40) + + let success := call(gas(), MOD_EXP_PRECOMPILED_CONTRACT, 0, inputPtr, inputLength, outputPtr, 0x20) + if iszero(success) { + revert(0, 0) + } + + result := outputPtr + } + } + + function testECAdd(bytes memory inputData) public returns (bytes memory result) { + require(inputData.length == 128, "Invalid input length"); + address EC_ADD_PRECOMPILED_CONTRACT = 0x0000000000000000000000000000000000000006; + + assembly { + let inputPtr := add(inputData, 0x20) // Ignore the length prefix of the inputData bytes array + let inputLength := mload(inputData) + + let success := call(gas(), EC_ADD_PRECOMPILED_CONTRACT, 0, inputPtr, inputLength, result, 0x40) + if iszero(success) { + revert(0, 0) + } + } + } } diff --git a/contracts/loadtester.go b/contracts/loadtester.go index 8c4a7dad..d88b9f7f 100644 --- a/contracts/loadtester.go +++ b/contracts/loadtester.go @@ -31,8 +31,8 @@ var ( // LoadTesterMetaData contains all meta data concerning the LoadTester contract. var LoadTesterMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"dumpster\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCallCounter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inc\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"loopBlockHashUntilLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"loopUntilLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"trash\",\"type\":\"bytes\"}],\"name\":\"store\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testADD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testADDMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testADDRESS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testAND\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBALANCE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBASEFEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBLOCKHASH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBYTE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLDATACOPY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLDATALOAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLDATASIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLER\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLVALUE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCHAINID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCODECOPY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCODESIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCOINBASE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testDIFFICULTY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testDIV\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testECRecover\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"result\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testEQ\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testEXP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testEXTCODESIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGASLIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGASPRICE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testISZERO\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testIdentity\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG0\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG3\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG4\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMLOAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMSIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMSTORE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMSTORE8\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMUL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMULMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testNOT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testNUMBER\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testORIGIN\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testRETURNDATACOPY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testRETURNDATASIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testRipemd160\",\"outputs\":[{\"internalType\":\"bytes20\",\"name\":\"result\",\"type\":\"bytes20\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSAR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSDIV\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSELFBALANCE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSGT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testSHA256\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"result\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSHA3\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSHL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSHR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSIGNEXTEND\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSLOAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSLT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSSTORE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSUB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testTIMESTAMP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testXOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b50612c04806100206000396000f3fe608060405234801561001057600080fd5b506004361061041d5760003560e01c80637de8c6f81161022b578063bf529ca111610130578063dd9bef60116100b8578063f279ca8111610087578063f279ca811461103a578063f4d1fc611461106a578063f58fc36a1461109a578063f6b0bbf7146110ca578063fde7721c146110fa5761041d565b8063dd9bef6014610f7a578063de97a36314610faa578063e9f9b3f214610fda578063ea5141e61461100a5761041d565b8063ce3cf4ef116100ff578063ce3cf4ef14610e8a578063d117320b14610eba578063d51e7b5b14610eea578063d53ff3fd14610f1a578063d93cd55814610f4a5761041d565b8063bf529ca114610dca578063c360aba614610dfa578063c420eb6114610e2a578063c4bd65d514610e5a5761041d565b8063a271b721116101b3578063b374012b11610182578063b374012b14610cda578063b3d847f214610d0a578063b7b8620714610d3a578063b81c148414610d6a578063bdc875fc14610d9a5761041d565b8063a271b72114610c2c578063a60a108714610c4a578063a645c9c214610c7a578063acaebdf614610caa5761041d565b806391e7b277116101fa57806391e7b27714610b3c57806398456f3e14610b6c5780639a2b7c8114610b9c5780639cce7cf914610bcc578063a18683cb14610bfc5761041d565b80637de8c6f814610a7c57806380947f8014610aac578063880eff3914610adc578063918a5fcd14610b0c5761041d565b80632d34e798116103315780635590c2d9116102b95780636e7f1fe7116102885780636e7f1fe71461098c5780636f099c8d146109bc57806371d91d28146109ec5780637b6e0b0e14610a1c5780637c191d2014610a4c5761041d565b80635590c2d9146108de57806360e13cde1461090e57806363138d4f1461093e578063659bbb4f1461096e5761041d565b80633a425dfc116103005780633a425dfc146107ee57806340fe26621461081e57806344cf3bc71461084e5780634a61af1f1461087e5780634d2c74b3146108ae5761041d565b80632d34e798146107405780633430ec0614610770578063371303c0146107a05780633a411f12146107be5761041d565b806318093b46116103b45780632007332e116103835780632007332e14610650578063219cddeb146106805780632294fc7f146106b05780632871ef85146106e05780632b21ef44146107105761041d565b806318093b461461059057806319b621d6146105c05780631aba07ea146105f05780631de2f343146106205761041d565b80631287a68c116103f05780631287a68c146104e2578063135d52f7146105005780631581cf191461053057806316582150146105605761041d565b8063034aef7114610422578063050082f814610452578063087b4e84146104825780630ba8a73b146104b2575b600080fd5b61043c6004803603810190610437919061238d565b61112a565b60405161044991906123c9565b60405180910390f35b61046c6004803603810190610467919061238d565b611165565b60405161047991906123c9565b60405180910390f35b61049c6004803603810190610497919061238d565b6111a0565b6040516104a991906123c9565b60405180910390f35b6104cc60048036038101906104c7919061238d565b6111da565b6040516104d991906123c9565b60405180910390f35b6104ea611216565b6040516104f791906123c9565b60405180910390f35b61051a6004803603810190610515919061238d565b61121f565b60405161052791906123c9565b60405180910390f35b61054a6004803603810190610545919061238d565b61125b565b60405161055791906123c9565b60405180910390f35b61057a6004803603810190610575919061238d565b611296565b60405161058791906123c9565b60405180910390f35b6105aa60048036038101906105a5919061238d565b6112f1565b6040516105b791906123c9565b60405180910390f35b6105da60048036038101906105d5919061238d565b61132f565b6040516105e791906123c9565b60405180910390f35b61060a6004803603810190610605919061238d565b6113be565b60405161061791906123c9565b60405180910390f35b61063a6004803603810190610635919061238d565b611404565b60405161064791906123c9565b60405180910390f35b61066a6004803603810190610665919061238d565b611442565b60405161067791906123c9565b60405180910390f35b61069a6004803603810190610695919061238d565b61147e565b6040516106a791906123c9565b60405180910390f35b6106ca60048036038101906106c5919061238d565b6114b9565b6040516106d791906123c9565b60405180910390f35b6106fa60048036038101906106f5919061238d565b6114f8565b60405161070791906123c9565b60405180910390f35b61072a6004803603810190610725919061238d565b611533565b60405161073791906123c9565b60405180910390f35b61075a6004803603810190610755919061238d565b61156e565b60405161076791906123c9565b60405180910390f35b61078a6004803603810190610785919061238d565b6115a9565b6040516107979190612474565b60405180910390f35b6107a8611655565b6040516107b591906123c9565b60405180910390f35b6107d860048036038101906107d3919061238d565b611674565b6040516107e591906123c9565b60405180910390f35b6108086004803603810190610803919061238d565b6116b0565b60405161081591906123c9565b60405180910390f35b6108386004803603810190610833919061238d565b6116ec565b60405161084591906123c9565b60405180910390f35b6108686004803603810190610863919061238d565b61172b565b60405161087591906123c9565b60405180910390f35b6108986004803603810190610893919061238d565b611766565b6040516108a591906123c9565b60405180910390f35b6108c860048036038101906108c3919061238d565b6117a4565b6040516108d591906123c9565b60405180910390f35b6108f860048036038101906108f3919061238d565b6117df565b60405161090591906123c9565b60405180910390f35b6109286004803603810190610923919061238d565b611824565b60405161093591906123c9565b60405180910390f35b610958600480360381019061095391906125cb565b611860565b604051610965919061262d565b60405180910390f35b61097661188c565b60405161098391906123c9565b60405180910390f35b6109a660048036038101906109a1919061238d565b6118c8565b6040516109b391906123c9565b60405180910390f35b6109d660048036038101906109d1919061238d565b611906565b6040516109e391906123c9565b60405180910390f35b610a066004803603810190610a01919061238d565b611941565b604051610a1391906123c9565b60405180910390f35b610a366004803603810190610a31919061238d565b61197f565b604051610a4391906123c9565b60405180910390f35b610a666004803603810190610a61919061238d565b6119bb565b604051610a7391906123c9565b60405180910390f35b610a966004803603810190610a91919061238d565b6119f6565b604051610aa391906123c9565b60405180910390f35b610ac66004803603810190610ac1919061238d565b611a32565b604051610ad391906123c9565b60405180910390f35b610af66004803603810190610af1919061238d565b611a8f565b604051610b0391906123c9565b60405180910390f35b610b266004803603810190610b21919061238d565b611ace565b604051610b3391906123c9565b60405180910390f35b610b566004803603810190610b51919061238d565b611b09565b604051610b6391906123c9565b60405180910390f35b610b866004803603810190610b81919061238d565b611b55565b604051610b9391906123c9565b60405180910390f35b610bb66004803603810190610bb1919061238d565b611b95565b604051610bc391906123c9565b60405180910390f35b610be66004803603810190610be191906125cb565b611bd0565b604051610bf39190612474565b60405180910390f35b610c166004803603810190610c1191906125cb565b611c01565b604051610c239190612689565b60405180910390f35b610c34611c83565b604051610c4191906123c9565b60405180910390f35b610c646004803603810190610c5f919061238d565b611cce565b604051610c7191906123c9565b60405180910390f35b610c946004803603810190610c8f919061238d565b611d09565b604051610ca191906123c9565b60405180910390f35b610cc46004803603810190610cbf919061238d565b611d45565b604051610cd191906123c9565b60405180910390f35b610cf46004803603810190610cef9190612704565b611d81565b604051610d0191906123c9565b60405180910390f35b610d246004803603810190610d1f919061238d565b611dcf565b604051610d3191906123c9565b60405180910390f35b610d546004803603810190610d4f919061238d565b611e0a565b604051610d6191906123c9565b60405180910390f35b610d846004803603810190610d7f919061238d565b611e45565b604051610d9191906123c9565b60405180910390f35b610db46004803603810190610daf919061238d565b611e80565b604051610dc191906123c9565b60405180910390f35b610de46004803603810190610ddf919061238d565b611ebb565b604051610df191906123c9565b60405180910390f35b610e146004803603810190610e0f919061238d565b611eff565b604051610e2191906123c9565b60405180910390f35b610e446004803603810190610e3f919061238d565b611f3b565b604051610e5191906123c9565b60405180910390f35b610e746004803603810190610e6f919061238d565b611f76565b604051610e8191906123c9565b60405180910390f35b610ea46004803603810190610e9f919061238d565b611fb4565b604051610eb191906123c9565b60405180910390f35b610ed46004803603810190610ecf919061238d565b611ff1565b604051610ee191906123c9565b60405180910390f35b610f046004803603810190610eff919061238d565b61202b565b604051610f1191906123c9565b60405180910390f35b610f346004803603810190610f2f919061238d565b612067565b604051610f4191906123c9565b60405180910390f35b610f646004803603810190610f5f919061238d565b6120a3565b604051610f7191906123c9565b60405180910390f35b610f946004803603810190610f8f919061238d565b6120fe565b604051610fa191906123c9565b60405180910390f35b610fc46004803603810190610fbf919061238d565b612140565b604051610fd191906123c9565b60405180910390f35b610ff46004803603810190610fef919061238d565b61217c565b60405161100191906123c9565b60405180910390f35b611024600480360381019061101f919061238d565b6121b9565b60405161103191906123c9565b60405180910390f35b611054600480360381019061104f919061238d565b6121fb565b60405161106191906123c9565b60405180910390f35b611084600480360381019061107f919061238d565b612237565b60405161109191906123c9565b60405180910390f35b6110b460048036038101906110af919061238d565b612275565b6040516110c191906123c9565b60405180910390f35b6110e460048036038101906110df91906125cb565b6122b4565b6040516110f1919061278c565b60405180910390f35b611114600480360381019061110f919061238d565b6122e6565b60405161112191906123c9565b60405180910390f35b6000611134611655565b50600065deadbeef003690506000805b8481101561115a57369150600181019050611144565b505080915050919050565b600061116f611655565b50600065deadbeef003290506000805b848110156111955732915060018101905061117f565b505080915050919050565b60006111aa611655565b50600065deadbeef0052905060005b838110156111d057816000526001810190506111b9565b5080915050919050565b60006111e4611655565b50600065deadbeef0001905060005b8381101561120c576000820191506001810190506111f3565b5080915050919050565b60008054905090565b6000611229611655565b50600065deadbeef0017905060005b8381101561125157600082179150600181019050611238565b5080915050919050565b6000611265611655565b50600065deadbeef003490506000805b8481101561128b57349150600181019050611275565b505080915050919050565b60006112a0611655565b50600065deadbeef0006905060005b838110156112e7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820691506001810190506112af565b5080915050919050565b60006112fb611655565b50600065deadbeef001390506000805b848110156113245760018313915060018101905061130b565b505080915050919050565b6000611339611655565b50600065deadbeef002090507fffffffff000000000000000000000000000000000000000000000000000000006000526000805b84811015611387576004600020915060018101905061136d565b507f29045a592007d0c246ef02c2223570da9522d0cf0f73282c79a1bc8f0bb2c23881146113b457600091505b5080915050919050565b60006113c8611655565b50600065deadbeef00a490508060105260005b838110156113fa576004600360028360066010a46001810190506113db565b5080915050919050565b600061140e611655565b50600065deadbeef001a90506000805b84811015611437578260001a915060018101905061141e565b505080915050919050565b600061144c611655565b50600065deadbeef001b905060005b83811015611474578160001b915060018101905061145b565b5080915050919050565b6000611488611655565b50600065deadbeef004290506000805b848110156114ae57429150600181019050611498565b505080915050919050565b60006114c3611655565b50600065deadbeef0031905060003060005b858110156114ec57813192506001810190506114d5565b50505080915050919050565b6000611502611655565b50600065deadbeef004890506000805b8481101561152857489150600181019050611512565b505080915050919050565b600061153d611655565b50600065deadbeef003d90506000805b84811015611563573d915060018101905061154d565b505080915050919050565b6000611578611655565b50600065deadbeef004390506000805b8481101561159e57439150600181019050611588565b505080915050919050565b600281815481106115b957600080fd5b9060005260206000200160009150905080546115d4906127d6565b80601f0160208091040260200160405190810160405280929190818152602001828054611600906127d6565b801561164d5780601f106116225761010080835404028352916020019161164d565b820191906000526020600020905b81548152906001019060200180831161163057829003601f168201915b505050505081565b600060016000546116669190612836565b600081905550600054905090565b600061167e611655565b50600065deadbeef0004905060005b838110156116a65760018204915060018101905061168d565b5080915050919050565b60006116ba611655565b50600065deadbeef0037905060005b838110156116e2576020600080376001810190506116c9565b5080915050919050565b60006116f6611655565b50600065deadbeef00a090508060105260005b838110156117215760066010a0600181019050611709565b5080915050919050565b6000611735611655565b50600065deadbeef003390506000805b8481101561175b57339150600181019050611745565b505080915050919050565b6000611770611655565b50600065deadbeef0053905060005b8381101561179a5763deadbeef60005260018101905061177f565b5080915050919050565b60006117ae611655565b50600065deadbeef003a90506000805b848110156117d4573a91506001810190506117be565b505080915050919050565b60006117e9611655565b50600065deadbeef0051905060008160005260005b848110156118165760005191506001810190506117fe565b508091505080915050919050565b600061182e611655565b50600065deadbeef001d905060005b83811015611856578160001d915060018101905061183d565b5080915050919050565b600080600290506020830183518360208183856000885af18061188257600080fd5b5050505050919050565b6000611896611655565b505b6103e85a11156118c05760018060008282546118b49190612836565b92505081905550611898565b600154905090565b60006118d2611655565b50600065deadbeef001090506000805b848110156118fb578260011091506001810190506118e2565b505080915050919050565b6000611910611655565b50600065deadbeef004490506000805b8481101561193657449150600181019050611920565b505080915050919050565b600061194b611655565b50600065deadbeef001190506000805b848110156119745760018311915060018101905061195b565b505080915050919050565b6000611989611655565b50600065deadbeef003e905060005b838110156119b15760206000803e600181019050611998565b5080915050919050565b60006119c5611655565b50600065deadbeef004590506000805b848110156119eb574591506001810190506119d5565b505080915050919050565b6000611a00611655565b50600065deadbeef0002905060005b83811015611a2857600182029150600181019050611a0f565b5080915050919050565b6000611a3c611655565b50600065deadbeef0008905060005b83811015611a85577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600083089150600181019050611a4b565b5080915050919050565b6000611a99611655565b50600065deadbeef005490508060005560005b83811015611ac4576000549150600181019050611aac565b5080915050919050565b6000611ad8611655565b50600065deadbeef005a90506000805b84811015611afe575a9150600181019050611ae8565b505080915050919050565b6000611b13611655565b50600065deadbeef0019905060005b83811015611b395781199150600181019050611b22565b5065deadbeef00198114611b4c57801990505b80915050919050565b6000611b5f611655565b50600065deadbeef00a190508060105260005b83811015611b8b578060066010a1600181019050611b72565b5080915050919050565b6000611b9f611655565b50600065deadbeef0016905060005b83811015611bc6578182169150600181019050611bae565b5080915050919050565b6060600060049050602083018351604051818183856000885af180611bf457600080fd5b8195505050505050919050565b60006080825114611c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3e906128c7565b60405180910390fd5b600060019050602083016020810151601f1a602082015260206040516080836000865af180611c7557600080fd5b604051519350505050919050565b6000611c8d611655565b505b6103e85a1115611cc6576001806000828254611cab9190612836565b9250508190555043600154611cc09190612916565b50611c8f565b600154905090565b6000611cd8611655565b50600065deadbeef004690506000805b84811015611cfe57469150600181019050611ce8565b505080915050919050565b6000611d13611655565b50600065deadbeef0005905060005b83811015611d3b57600182059150600181019050611d22565b5080915050919050565b6000611d4f611655565b50600065deadbeef0039905060005b83811015611d7757602060008039600181019050611d5e565b5080915050919050565b60006002838390918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611dc0929190612afe565b50600280549050905092915050565b6000611dd9611655565b50600065deadbeef005990506000805b84811015611dff57599150600181019050611de9565b505080915050919050565b6000611e14611655565b50600065deadbeef003890506000805b84811015611e3a57389150600181019050611e24565b505080915050919050565b6000611e4f611655565b50600065deadbeef004190506000805b84811015611e7557419150600181019050611e5f565b505080915050919050565b6000611e8a611655565b50600065deadbeef003090506000805b84811015611eb057309150600181019050611e9a565b505080915050919050565b6000611ec5611655565b50600065deadbeef00a390508060105260005b83811015611ef557600360028260066010a3600181019050611ed8565b5080915050919050565b6000611f09611655565b50600065deadbeef000b905060005b83811015611f31578160200b9150600181019050611f18565b5080915050919050565b6000611f45611655565b50600065deadbeef004790506000805b84811015611f6b57479150600181019050611f55565b505080915050919050565b6000611f80611655565b50600065deadbeef001c90506000805b84811015611fa9578260001c9250600181019050611f90565b505080915050919050565b6000611fbe611655565b50600065deadbeef003590506000805b84811015611fe6576000359150600181019050611fce565b505080915050919050565b6000611ffb611655565b50600065deadbeef0055905060005b83811015612021578160005560018101905061200a565b5080915050919050565b6000612035611655565b50600065deadbeef0018905060005b8381101561205d57600082189150600181019050612044565b5080915050919050565b6000612071611655565b50600065deadbeef0003905060005b8381101561209957600082039150600181019050612080565b5080915050919050565b60006120ad611655565b50600065deadbeef0007905060005b838110156120f4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820791506001810190506120bc565b5080915050919050565b6000612108611655565b50600065deadbeef00a290508060105260005b838110156121365760028160066010a260018101905061211b565b5080915050919050565b600061214a611655565b50600065deadbeef000a905060005b83811015612172576001820a9150600181019050612159565b5080915050919050565b6000612186611655565b50600065deadbeef001490506000805b848110156121ae578283149150600181019050612196565b505080915050919050565b60006121c3611655565b50600065deadbeef0040905060006001430360005b858110156121ef57814092506001810190506121d8565b50505080915050919050565b6000612205611655565b50600065deadbeef001590506000805b8481101561222c5782159150600181019050612215565b505080915050919050565b6000612241611655565b50600065deadbeef001290506000805b8481101561226a57826001129150600181019050612251565b505080915050919050565b600061227f611655565b50600065deadbeef003b905060003060005b858110156122a857813b9250600181019050612291565b50505080915050919050565b6000806003905060208301835160405160148183856000885af1806122d857600080fd5b815195505050505050919050565b60006122f0611655565b50600065deadbeef0009905060005b83811015612339577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001830991506001810190506122ff565b5080915050919050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61236a81612357565b811461237557600080fd5b50565b60008135905061238781612361565b92915050565b6000602082840312156123a3576123a261234d565b5b60006123b184828501612378565b91505092915050565b6123c381612357565b82525050565b60006020820190506123de60008301846123ba565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561241e578082015181840152602081019050612403565b60008484015250505050565b6000601f19601f8301169050919050565b6000612446826123e4565b61245081856123ef565b9350612460818560208601612400565b6124698161242a565b840191505092915050565b6000602082019050818103600083015261248e818461243b565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6124d88261242a565b810181811067ffffffffffffffff821117156124f7576124f66124a0565b5b80604052505050565b600061250a612343565b905061251682826124cf565b919050565b600067ffffffffffffffff821115612536576125356124a0565b5b61253f8261242a565b9050602081019050919050565b82818337600083830152505050565b600061256e6125698461251b565b612500565b90508281526020810184848401111561258a5761258961249b565b5b61259584828561254c565b509392505050565b600082601f8301126125b2576125b1612496565b5b81356125c284826020860161255b565b91505092915050565b6000602082840312156125e1576125e061234d565b5b600082013567ffffffffffffffff8111156125ff576125fe612352565b5b61260b8482850161259d565b91505092915050565b6000819050919050565b61262781612614565b82525050565b6000602082019050612642600083018461261e565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061267382612648565b9050919050565b61268381612668565b82525050565b600060208201905061269e600083018461267a565b92915050565b600080fd5b600080fd5b60008083601f8401126126c4576126c3612496565b5b8235905067ffffffffffffffff8111156126e1576126e06126a4565b5b6020830191508360018202830111156126fd576126fc6126a9565b5b9250929050565b6000806020838503121561271b5761271a61234d565b5b600083013567ffffffffffffffff81111561273957612738612352565b5b612745858286016126ae565b92509250509250929050565b60007fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b61278681612751565b82525050565b60006020820190506127a1600083018461277d565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806127ee57607f821691505b602082108103612801576128006127a7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061284182612357565b915061284c83612357565b925082820190508082111561286457612863612807565b5b92915050565b600082825260208201905092915050565b7f496e76616c696420696e7075742064617461206c656e6774682e000000000000600082015250565b60006128b1601a8361286a565b91506128bc8261287b565b602082019050919050565b600060208201905081810360008301526128e0816128a4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061292182612357565b915061292c83612357565b92508261293c5761293b6128e7565b5b828206905092915050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026129b47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612977565b6129be8683612977565b95508019841693508086168417925050509392505050565b6000819050919050565b60006129fb6129f66129f184612357565b6129d6565b612357565b9050919050565b6000819050919050565b612a15836129e0565b612a29612a2182612a02565b848454612984565b825550505050565b600090565b612a3e612a31565b612a49818484612a0c565b505050565b5b81811015612a6d57612a62600082612a36565b600181019050612a4f565b5050565b601f821115612ab257612a8381612952565b612a8c84612967565b81016020851015612a9b578190505b612aaf612aa785612967565b830182612a4e565b50505b505050565b600082821c905092915050565b6000612ad560001984600802612ab7565b1980831691505092915050565b6000612aee8383612ac4565b9150826002028217905092915050565b612b088383612947565b67ffffffffffffffff811115612b2157612b206124a0565b5b612b2b82546127d6565b612b36828285612a71565b6000601f831160018114612b655760008415612b53578287013590505b612b5d8582612ae2565b865550612bc5565b601f198416612b7386612952565b60005b82811015612b9b57848901358255600182019150602085019450602081019050612b76565b86831015612bb85784890135612bb4601f891682612ac4565b8355505b6001600288020188555050505b5050505050505056fea2646970667358221220224f9cc55b756f70a556b24e75bc7fbd949d95f68d437b6b711c6f3d23cea5b564736f6c63430008130033", + ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"dumpster\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCallCounter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inc\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"loopBlockHashUntilLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"loopUntilLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"trash\",\"type\":\"bytes\"}],\"name\":\"store\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testADD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testADDMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testADDRESS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testAND\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBALANCE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBASEFEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBLOCKHASH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBYTE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLDATACOPY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLDATALOAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLDATASIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLER\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLVALUE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCHAINID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCODECOPY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCODESIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCOINBASE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testDIFFICULTY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testDIV\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testECAdd\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testECRecover\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"result\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testEQ\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testEXP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testEXTCODESIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGASLIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGASPRICE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testISZERO\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testIdentity\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG0\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG3\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG4\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMLOAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMSIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMSTORE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMSTORE8\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMUL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMULMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testModExp\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testNOT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testNUMBER\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testORIGIN\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testRETURNDATACOPY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testRETURNDATASIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testRipemd160\",\"outputs\":[{\"internalType\":\"bytes20\",\"name\":\"result\",\"type\":\"bytes20\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSAR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSDIV\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSELFBALANCE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSGT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testSHA256\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"result\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSHA3\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSHL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSHR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSIGNEXTEND\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSLOAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSLT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSSTORE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSUB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testTIMESTAMP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testXOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x608060405234801561001057600080fd5b50612d87806100206000396000f3fe608060405234801561001057600080fd5b50600436106104335760003560e01c80637de8c6f811610236578063bf529ca11161013b578063dd9bef60116100c3578063f279ca8111610087578063f279ca81146110b0578063f4d1fc61146110e0578063f58fc36a14611110578063f6b0bbf714611140578063fde7721c1461117057610433565b8063dd9bef6014610fc0578063de97a36314610ff0578063e9f9b3f214611020578063ea5141e614611050578063edf003cf1461108057610433565b8063ce3cf4ef1161010a578063ce3cf4ef14610ed0578063d117320b14610f00578063d51e7b5b14610f30578063d53ff3fd14610f60578063d93cd55814610f9057610433565b8063bf529ca114610e10578063c360aba614610e40578063c420eb6114610e70578063c4bd65d514610ea057610433565b8063a271b721116101be578063b374012b1161018d578063b374012b14610d20578063b3d847f214610d50578063b7b8620714610d80578063b81c148414610db0578063bdc875fc14610de057610433565b8063a271b72114610c72578063a60a108714610c90578063a645c9c214610cc0578063acaebdf614610cf057610433565b806391e7b2771161020557806391e7b27714610b8257806398456f3e14610bb25780639a2b7c8114610be25780639cce7cf914610c12578063a18683cb14610c4257610433565b80637de8c6f814610ac257806380947f8014610af2578063880eff3914610b22578063918a5fcd14610b5257610433565b80633430ec061161033c57806360e13cde116102c45780636e7f1fe7116102935780636e7f1fe7146109d25780636f099c8d14610a0257806371d91d2814610a325780637b6e0b0e14610a625780637c191d2014610a9257610433565b806360e13cde14610924578063613d0a821461095457806363138d4f14610984578063659bbb4f146109b457610433565b806340fe26621161030b57806340fe26621461083457806344cf3bc7146108645780634a61af1f146108945780634d2c74b3146108c45780635590c2d9146108f457610433565b80633430ec0614610786578063371303c0146107b65780633a411f12146107d45780633a425dfc1461080457610433565b806319b621d6116103bf578063219cddeb1161038e578063219cddeb146106965780632294fc7f146106c65780632871ef85146106f65780632b21ef44146107265780632d34e7981461075657610433565b806319b621d6146105d65780631aba07ea146106065780631de2f343146106365780632007332e1461066657610433565b80631287a68c116104065780631287a68c146104f8578063135d52f7146105165780631581cf1914610546578063165821501461057657806318093b46146105a657610433565b8063034aef7114610438578063050082f814610468578063087b4e84146104985780630ba8a73b146104c8575b600080fd5b610452600480360381019061044d91906124a4565b6111a0565b60405161045f91906124e0565b60405180910390f35b610482600480360381019061047d91906124a4565b6111db565b60405161048f91906124e0565b60405180910390f35b6104b260048036038101906104ad91906124a4565b611216565b6040516104bf91906124e0565b60405180910390f35b6104e260048036038101906104dd91906124a4565b611250565b6040516104ef91906124e0565b60405180910390f35b61050061128c565b60405161050d91906124e0565b60405180910390f35b610530600480360381019061052b91906124a4565b611295565b60405161053d91906124e0565b60405180910390f35b610560600480360381019061055b91906124a4565b6112d1565b60405161056d91906124e0565b60405180910390f35b610590600480360381019061058b91906124a4565b61130c565b60405161059d91906124e0565b60405180910390f35b6105c060048036038101906105bb91906124a4565b611367565b6040516105cd91906124e0565b60405180910390f35b6105f060048036038101906105eb91906124a4565b6113a5565b6040516105fd91906124e0565b60405180910390f35b610620600480360381019061061b91906124a4565b611434565b60405161062d91906124e0565b60405180910390f35b610650600480360381019061064b91906124a4565b61147a565b60405161065d91906124e0565b60405180910390f35b610680600480360381019061067b91906124a4565b6114b8565b60405161068d91906124e0565b60405180910390f35b6106b060048036038101906106ab91906124a4565b6114f4565b6040516106bd91906124e0565b60405180910390f35b6106e060048036038101906106db91906124a4565b61152f565b6040516106ed91906124e0565b60405180910390f35b610710600480360381019061070b91906124a4565b61156e565b60405161071d91906124e0565b60405180910390f35b610740600480360381019061073b91906124a4565b6115a9565b60405161074d91906124e0565b60405180910390f35b610770600480360381019061076b91906124a4565b6115e4565b60405161077d91906124e0565b60405180910390f35b6107a0600480360381019061079b91906124a4565b61161f565b6040516107ad919061258b565b60405180910390f35b6107be6116cb565b6040516107cb91906124e0565b60405180910390f35b6107ee60048036038101906107e991906124a4565b6116ea565b6040516107fb91906124e0565b60405180910390f35b61081e600480360381019061081991906124a4565b611726565b60405161082b91906124e0565b60405180910390f35b61084e600480360381019061084991906124a4565b611762565b60405161085b91906124e0565b60405180910390f35b61087e600480360381019061087991906124a4565b6117a1565b60405161088b91906124e0565b60405180910390f35b6108ae60048036038101906108a991906124a4565b6117dc565b6040516108bb91906124e0565b60405180910390f35b6108de60048036038101906108d991906124a4565b61181a565b6040516108eb91906124e0565b60405180910390f35b61090e600480360381019061090991906124a4565b611855565b60405161091b91906124e0565b60405180910390f35b61093e600480360381019061093991906124a4565b61189a565b60405161094b91906124e0565b60405180910390f35b61096e600480360381019061096991906126e2565b6118d6565b60405161097b919061258b565b60405180910390f35b61099e600480360381019061099991906126e2565b611908565b6040516109ab9190612744565b60405180910390f35b6109bc611934565b6040516109c991906124e0565b60405180910390f35b6109ec60048036038101906109e791906124a4565b611970565b6040516109f991906124e0565b60405180910390f35b610a1c6004803603810190610a1791906124a4565b6119ae565b604051610a2991906124e0565b60405180910390f35b610a4c6004803603810190610a4791906124a4565b6119e9565b604051610a5991906124e0565b60405180910390f35b610a7c6004803603810190610a7791906124a4565b611a27565b604051610a8991906124e0565b60405180910390f35b610aac6004803603810190610aa791906124a4565b611a63565b604051610ab991906124e0565b60405180910390f35b610adc6004803603810190610ad791906124a4565b611a9e565b604051610ae991906124e0565b60405180910390f35b610b0c6004803603810190610b0791906124a4565b611ada565b604051610b1991906124e0565b60405180910390f35b610b3c6004803603810190610b3791906124a4565b611b37565b604051610b4991906124e0565b60405180910390f35b610b6c6004803603810190610b6791906124a4565b611b76565b604051610b7991906124e0565b60405180910390f35b610b9c6004803603810190610b9791906124a4565b611bb1565b604051610ba991906124e0565b60405180910390f35b610bcc6004803603810190610bc791906124a4565b611bfd565b604051610bd991906124e0565b60405180910390f35b610bfc6004803603810190610bf791906124a4565b611c3d565b604051610c0991906124e0565b60405180910390f35b610c2c6004803603810190610c2791906126e2565b611c78565b604051610c39919061258b565b60405180910390f35b610c5c6004803603810190610c5791906126e2565b611ca9565b604051610c6991906127a0565b60405180910390f35b610c7a611d2b565b604051610c8791906124e0565b60405180910390f35b610caa6004803603810190610ca591906124a4565b611d76565b604051610cb791906124e0565b60405180910390f35b610cda6004803603810190610cd591906124a4565b611db1565b604051610ce791906124e0565b60405180910390f35b610d0a6004803603810190610d0591906124a4565b611ded565b604051610d1791906124e0565b60405180910390f35b610d3a6004803603810190610d35919061281b565b611e29565b604051610d4791906124e0565b60405180910390f35b610d6a6004803603810190610d6591906124a4565b611e77565b604051610d7791906124e0565b60405180910390f35b610d9a6004803603810190610d9591906124a4565b611eb2565b604051610da791906124e0565b60405180910390f35b610dca6004803603810190610dc591906124a4565b611eed565b604051610dd791906124e0565b60405180910390f35b610dfa6004803603810190610df591906124a4565b611f28565b604051610e0791906124e0565b60405180910390f35b610e2a6004803603810190610e2591906124a4565b611f63565b604051610e3791906124e0565b60405180910390f35b610e5a6004803603810190610e5591906124a4565b611fa7565b604051610e6791906124e0565b60405180910390f35b610e8a6004803603810190610e8591906124a4565b611fe3565b604051610e9791906124e0565b60405180910390f35b610eba6004803603810190610eb591906124a4565b61201e565b604051610ec791906124e0565b60405180910390f35b610eea6004803603810190610ee591906124a4565b61205c565b604051610ef791906124e0565b60405180910390f35b610f1a6004803603810190610f1591906124a4565b612099565b604051610f2791906124e0565b60405180910390f35b610f4a6004803603810190610f4591906124a4565b6120d3565b604051610f5791906124e0565b60405180910390f35b610f7a6004803603810190610f7591906124a4565b61210f565b604051610f8791906124e0565b60405180910390f35b610faa6004803603810190610fa591906124a4565b61214b565b604051610fb791906124e0565b60405180910390f35b610fda6004803603810190610fd591906124a4565b6121a6565b604051610fe791906124e0565b60405180910390f35b61100a600480360381019061100591906124a4565b6121e8565b60405161101791906124e0565b60405180910390f35b61103a600480360381019061103591906124a4565b612224565b60405161104791906124e0565b60405180910390f35b61106a600480360381019061106591906124a4565b612261565b60405161107791906124e0565b60405180910390f35b61109a600480360381019061109591906126e2565b6122a3565b6040516110a7919061258b565b60405180910390f35b6110ca60048036038101906110c591906124a4565b612312565b6040516110d791906124e0565b60405180910390f35b6110fa60048036038101906110f591906124a4565b61234e565b60405161110791906124e0565b60405180910390f35b61112a600480360381019061112591906124a4565b61238c565b60405161113791906124e0565b60405180910390f35b61115a600480360381019061115591906126e2565b6123cb565b60405161116791906128a3565b60405180910390f35b61118a600480360381019061118591906124a4565b6123fd565b60405161119791906124e0565b60405180910390f35b60006111aa6116cb565b50600065deadbeef003690506000805b848110156111d0573691506001810190506111ba565b505080915050919050565b60006111e56116cb565b50600065deadbeef003290506000805b8481101561120b573291506001810190506111f5565b505080915050919050565b60006112206116cb565b50600065deadbeef0052905060005b83811015611246578160005260018101905061122f565b5080915050919050565b600061125a6116cb565b50600065deadbeef0001905060005b8381101561128257600082019150600181019050611269565b5080915050919050565b60008054905090565b600061129f6116cb565b50600065deadbeef0017905060005b838110156112c7576000821791506001810190506112ae565b5080915050919050565b60006112db6116cb565b50600065deadbeef003490506000805b84811015611301573491506001810190506112eb565b505080915050919050565b60006113166116cb565b50600065deadbeef0006905060005b8381101561135d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82069150600181019050611325565b5080915050919050565b60006113716116cb565b50600065deadbeef001390506000805b8481101561139a57600183139150600181019050611381565b505080915050919050565b60006113af6116cb565b50600065deadbeef002090507fffffffff000000000000000000000000000000000000000000000000000000006000526000805b848110156113fd57600460002091506001810190506113e3565b507f29045a592007d0c246ef02c2223570da9522d0cf0f73282c79a1bc8f0bb2c238811461142a57600091505b5080915050919050565b600061143e6116cb565b50600065deadbeef00a490508060105260005b83811015611470576004600360028360066010a4600181019050611451565b5080915050919050565b60006114846116cb565b50600065deadbeef001a90506000805b848110156114ad578260001a9150600181019050611494565b505080915050919050565b60006114c26116cb565b50600065deadbeef001b905060005b838110156114ea578160001b91506001810190506114d1565b5080915050919050565b60006114fe6116cb565b50600065deadbeef004290506000805b848110156115245742915060018101905061150e565b505080915050919050565b60006115396116cb565b50600065deadbeef0031905060003060005b85811015611562578131925060018101905061154b565b50505080915050919050565b60006115786116cb565b50600065deadbeef004890506000805b8481101561159e57489150600181019050611588565b505080915050919050565b60006115b36116cb565b50600065deadbeef003d90506000805b848110156115d9573d91506001810190506115c3565b505080915050919050565b60006115ee6116cb565b50600065deadbeef004390506000805b84811015611614574391506001810190506115fe565b505080915050919050565b6002818154811061162f57600080fd5b90600052602060002001600091509050805461164a906128ed565b80601f0160208091040260200160405190810160405280929190818152602001828054611676906128ed565b80156116c35780601f10611698576101008083540402835291602001916116c3565b820191906000526020600020905b8154815290600101906020018083116116a657829003601f168201915b505050505081565b600060016000546116dc919061294d565b600081905550600054905090565b60006116f46116cb565b50600065deadbeef0004905060005b8381101561171c57600182049150600181019050611703565b5080915050919050565b60006117306116cb565b50600065deadbeef0037905060005b838110156117585760206000803760018101905061173f565b5080915050919050565b600061176c6116cb565b50600065deadbeef00a090508060105260005b838110156117975760066010a060018101905061177f565b5080915050919050565b60006117ab6116cb565b50600065deadbeef003390506000805b848110156117d1573391506001810190506117bb565b505080915050919050565b60006117e66116cb565b50600065deadbeef0053905060005b838110156118105763deadbeef6000526001810190506117f5565b5080915050919050565b60006118246116cb565b50600065deadbeef003a90506000805b8481101561184a573a9150600181019050611834565b505080915050919050565b600061185f6116cb565b50600065deadbeef0051905060008160005260005b8481101561188c576000519150600181019050611874565b508091505080915050919050565b60006118a46116cb565b50600065deadbeef001d905060005b838110156118cc578160001d91506001810190506118b3565b5080915050919050565b606060006005905060208301835160405160208183856000885af1806118fb57600080fd5b8195505050505050919050565b600080600290506020830183518360208183856000885af18061192a57600080fd5b5050505050919050565b600061193e6116cb565b505b6103e85a111561196857600180600082825461195c919061294d565b92505081905550611940565b600154905090565b600061197a6116cb565b50600065deadbeef001090506000805b848110156119a35782600110915060018101905061198a565b505080915050919050565b60006119b86116cb565b50600065deadbeef004490506000805b848110156119de574491506001810190506119c8565b505080915050919050565b60006119f36116cb565b50600065deadbeef001190506000805b84811015611a1c57600183119150600181019050611a03565b505080915050919050565b6000611a316116cb565b50600065deadbeef003e905060005b83811015611a595760206000803e600181019050611a40565b5080915050919050565b6000611a6d6116cb565b50600065deadbeef004590506000805b84811015611a9357459150600181019050611a7d565b505080915050919050565b6000611aa86116cb565b50600065deadbeef0002905060005b83811015611ad057600182029150600181019050611ab7565b5080915050919050565b6000611ae46116cb565b50600065deadbeef0008905060005b83811015611b2d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600083089150600181019050611af3565b5080915050919050565b6000611b416116cb565b50600065deadbeef005490508060005560005b83811015611b6c576000549150600181019050611b54565b5080915050919050565b6000611b806116cb565b50600065deadbeef005a90506000805b84811015611ba6575a9150600181019050611b90565b505080915050919050565b6000611bbb6116cb565b50600065deadbeef0019905060005b83811015611be15781199150600181019050611bca565b5065deadbeef00198114611bf457801990505b80915050919050565b6000611c076116cb565b50600065deadbeef00a190508060105260005b83811015611c33578060066010a1600181019050611c1a565b5080915050919050565b6000611c476116cb565b50600065deadbeef0016905060005b83811015611c6e578182169150600181019050611c56565b5080915050919050565b6060600060049050602083018351604051818183856000885af180611c9c57600080fd5b8195505050505050919050565b60006080825114611cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce6906129de565b60405180910390fd5b600060019050602083016020810151601f1a602082015260206040516080836000865af180611d1d57600080fd5b604051519350505050919050565b6000611d356116cb565b505b6103e85a1115611d6e576001806000828254611d53919061294d565b9250508190555043600154611d689190612a2d565b50611d37565b600154905090565b6000611d806116cb565b50600065deadbeef004690506000805b84811015611da657469150600181019050611d90565b505080915050919050565b6000611dbb6116cb565b50600065deadbeef0005905060005b83811015611de357600182059150600181019050611dca565b5080915050919050565b6000611df76116cb565b50600065deadbeef0039905060005b83811015611e1f57602060008039600181019050611e06565b5080915050919050565b60006002838390918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611e68929190612c15565b50600280549050905092915050565b6000611e816116cb565b50600065deadbeef005990506000805b84811015611ea757599150600181019050611e91565b505080915050919050565b6000611ebc6116cb565b50600065deadbeef003890506000805b84811015611ee257389150600181019050611ecc565b505080915050919050565b6000611ef76116cb565b50600065deadbeef004190506000805b84811015611f1d57419150600181019050611f07565b505080915050919050565b6000611f326116cb565b50600065deadbeef003090506000805b84811015611f5857309150600181019050611f42565b505080915050919050565b6000611f6d6116cb565b50600065deadbeef00a390508060105260005b83811015611f9d57600360028260066010a3600181019050611f80565b5080915050919050565b6000611fb16116cb565b50600065deadbeef000b905060005b83811015611fd9578160200b9150600181019050611fc0565b5080915050919050565b6000611fed6116cb565b50600065deadbeef004790506000805b8481101561201357479150600181019050611ffd565b505080915050919050565b60006120286116cb565b50600065deadbeef001c90506000805b84811015612051578260001c9250600181019050612038565b505080915050919050565b60006120666116cb565b50600065deadbeef003590506000805b8481101561208e576000359150600181019050612076565b505080915050919050565b60006120a36116cb565b50600065deadbeef0055905060005b838110156120c957816000556001810190506120b2565b5080915050919050565b60006120dd6116cb565b50600065deadbeef0018905060005b83811015612105576000821891506001810190506120ec565b5080915050919050565b60006121196116cb565b50600065deadbeef0003905060005b8381101561214157600082039150600181019050612128565b5080915050919050565b60006121556116cb565b50600065deadbeef0007905060005b8381101561219c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82079150600181019050612164565b5080915050919050565b60006121b06116cb565b50600065deadbeef00a290508060105260005b838110156121de5760028160066010a26001810190506121c3565b5080915050919050565b60006121f26116cb565b50600065deadbeef000a905060005b8381101561221a576001820a9150600181019050612201565b5080915050919050565b600061222e6116cb565b50600065deadbeef001490506000805b8481101561225657828314915060018101905061223e565b505080915050919050565b600061226b6116cb565b50600065deadbeef0040905060006001430360005b858110156122975781409250600181019050612280565b50505080915050919050565b606060808251146122e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e090612d31565b60405180910390fd5b60006006905060208301835160408482846000875af18061230957600080fd5b50505050919050565b600061231c6116cb565b50600065deadbeef001590506000805b84811015612343578215915060018101905061232c565b505080915050919050565b60006123586116cb565b50600065deadbeef001290506000805b8481101561238157826001129150600181019050612368565b505080915050919050565b60006123966116cb565b50600065deadbeef003b905060003060005b858110156123bf57813b92506001810190506123a8565b50505080915050919050565b6000806003905060208301835160405160148183856000885af1806123ef57600080fd5b815195505050505050919050565b60006124076116cb565b50600065deadbeef0009905060005b83811015612450577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600183099150600181019050612416565b5080915050919050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6124818161246e565b811461248c57600080fd5b50565b60008135905061249e81612478565b92915050565b6000602082840312156124ba576124b9612464565b5b60006124c88482850161248f565b91505092915050565b6124da8161246e565b82525050565b60006020820190506124f560008301846124d1565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561253557808201518184015260208101905061251a565b60008484015250505050565b6000601f19601f8301169050919050565b600061255d826124fb565b6125678185612506565b9350612577818560208601612517565b61258081612541565b840191505092915050565b600060208201905081810360008301526125a58184612552565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6125ef82612541565b810181811067ffffffffffffffff8211171561260e5761260d6125b7565b5b80604052505050565b600061262161245a565b905061262d82826125e6565b919050565b600067ffffffffffffffff82111561264d5761264c6125b7565b5b61265682612541565b9050602081019050919050565b82818337600083830152505050565b600061268561268084612632565b612617565b9050828152602081018484840111156126a1576126a06125b2565b5b6126ac848285612663565b509392505050565b600082601f8301126126c9576126c86125ad565b5b81356126d9848260208601612672565b91505092915050565b6000602082840312156126f8576126f7612464565b5b600082013567ffffffffffffffff81111561271657612715612469565b5b612722848285016126b4565b91505092915050565b6000819050919050565b61273e8161272b565b82525050565b60006020820190506127596000830184612735565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061278a8261275f565b9050919050565b61279a8161277f565b82525050565b60006020820190506127b56000830184612791565b92915050565b600080fd5b600080fd5b60008083601f8401126127db576127da6125ad565b5b8235905067ffffffffffffffff8111156127f8576127f76127bb565b5b602083019150836001820283011115612814576128136127c0565b5b9250929050565b6000806020838503121561283257612831612464565b5b600083013567ffffffffffffffff8111156128505761284f612469565b5b61285c858286016127c5565b92509250509250929050565b60007fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b61289d81612868565b82525050565b60006020820190506128b86000830184612894565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061290557607f821691505b602082108103612918576129176128be565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129588261246e565b91506129638361246e565b925082820190508082111561297b5761297a61291e565b5b92915050565b600082825260208201905092915050565b7f496e76616c696420696e7075742064617461206c656e6774682e000000000000600082015250565b60006129c8601a83612981565b91506129d382612992565b602082019050919050565b600060208201905081810360008301526129f7816129bb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a388261246e565b9150612a438361246e565b925082612a5357612a526129fe565b5b828206905092915050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612acb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612a8e565b612ad58683612a8e565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612b12612b0d612b088461246e565b612aed565b61246e565b9050919050565b6000819050919050565b612b2c83612af7565b612b40612b3882612b19565b848454612a9b565b825550505050565b600090565b612b55612b48565b612b60818484612b23565b505050565b5b81811015612b8457612b79600082612b4d565b600181019050612b66565b5050565b601f821115612bc957612b9a81612a69565b612ba384612a7e565b81016020851015612bb2578190505b612bc6612bbe85612a7e565b830182612b65565b50505b505050565b600082821c905092915050565b6000612bec60001984600802612bce565b1980831691505092915050565b6000612c058383612bdb565b9150826002028217905092915050565b612c1f8383612a5e565b67ffffffffffffffff811115612c3857612c376125b7565b5b612c4282546128ed565b612c4d828285612b88565b6000601f831160018114612c7c5760008415612c6a578287013590505b612c748582612bf9565b865550612cdc565b601f198416612c8a86612a69565b60005b82811015612cb257848901358255600182019150602085019450602081019050612c8d565b86831015612ccf5784890135612ccb601f891682612bdb565b8355505b6001600288020188555050505b50505050505050565b7f496e76616c696420696e707574206c656e677468000000000000000000000000600082015250565b6000612d1b601483612981565b9150612d2682612ce5565b602082019050919050565b60006020820190508181036000830152612d4a81612d0e565b905091905056fea26469706673582212201b540fbef3fb329c62d3c5ab4a168060872273585e8bfe8b9988c68073c175d464736f6c63430008130033", } // LoadTesterABI is the input ABI used to generate the binding from. @@ -747,6 +747,27 @@ func (_LoadTester *LoadTesterTransactorSession) TestDIV(x *big.Int) (*types.Tran return _LoadTester.Contract.TestDIV(&_LoadTester.TransactOpts, x) } +// TestECAdd is a paid mutator transaction binding the contract method 0xedf003cf. +// +// Solidity: function testECAdd(bytes inputData) returns(bytes result) +func (_LoadTester *LoadTesterTransactor) TestECAdd(opts *bind.TransactOpts, inputData []byte) (*types.Transaction, error) { + return _LoadTester.contract.Transact(opts, "testECAdd", inputData) +} + +// TestECAdd is a paid mutator transaction binding the contract method 0xedf003cf. +// +// Solidity: function testECAdd(bytes inputData) returns(bytes result) +func (_LoadTester *LoadTesterSession) TestECAdd(inputData []byte) (*types.Transaction, error) { + return _LoadTester.Contract.TestECAdd(&_LoadTester.TransactOpts, inputData) +} + +// TestECAdd is a paid mutator transaction binding the contract method 0xedf003cf. +// +// Solidity: function testECAdd(bytes inputData) returns(bytes result) +func (_LoadTester *LoadTesterTransactorSession) TestECAdd(inputData []byte) (*types.Transaction, error) { + return _LoadTester.Contract.TestECAdd(&_LoadTester.TransactOpts, inputData) +} + // TestECRecover is a paid mutator transaction binding the contract method 0xa18683cb. // // Solidity: function testECRecover(bytes inputData) returns(address result) @@ -1230,6 +1251,27 @@ func (_LoadTester *LoadTesterTransactorSession) TestMULMOD(x *big.Int) (*types.T return _LoadTester.Contract.TestMULMOD(&_LoadTester.TransactOpts, x) } +// TestModExp is a paid mutator transaction binding the contract method 0x613d0a82. +// +// Solidity: function testModExp(bytes inputData) returns(bytes result) +func (_LoadTester *LoadTesterTransactor) TestModExp(opts *bind.TransactOpts, inputData []byte) (*types.Transaction, error) { + return _LoadTester.contract.Transact(opts, "testModExp", inputData) +} + +// TestModExp is a paid mutator transaction binding the contract method 0x613d0a82. +// +// Solidity: function testModExp(bytes inputData) returns(bytes result) +func (_LoadTester *LoadTesterSession) TestModExp(inputData []byte) (*types.Transaction, error) { + return _LoadTester.Contract.TestModExp(&_LoadTester.TransactOpts, inputData) +} + +// TestModExp is a paid mutator transaction binding the contract method 0x613d0a82. +// +// Solidity: function testModExp(bytes inputData) returns(bytes result) +func (_LoadTester *LoadTesterTransactorSession) TestModExp(inputData []byte) (*types.Transaction, error) { + return _LoadTester.Contract.TestModExp(&_LoadTester.TransactOpts, inputData) +} + // TestNOT is a paid mutator transaction binding the contract method 0x91e7b277. // // Solidity: function testNOT(uint256 x) returns(uint256) diff --git a/contracts/precompiledContracts.go b/contracts/precompiledContracts.go index 3bb08971..3b26bbe1 100644 --- a/contracts/precompiledContracts.go +++ b/contracts/precompiledContracts.go @@ -4,15 +4,27 @@ import ( "crypto/ecdsa" "fmt" "math/rand" + // "encoding/binary" + "math/big" "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/math" ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" "github.com/rs/zerolog/log" ) +func byteSize(value *big.Int) int { + // Calculate the byte size of the input value + bytes := value.Bytes() + if len(bytes) == 0 { + return 0 + } + return len(bytes) +} + func GenerateECRecoverInput(privateKey *ecdsa.PrivateKey) []byte { message := []byte("Test ecRecover") messageHash := crypto.Keccak256Hash(message) @@ -50,6 +62,49 @@ func GenerateIdentityInput() []byte { return inputData } +func GenerateModExpInput() []byte { + base := big.NewInt(8) + exponent := big.NewInt(9) + modulus := big.NewInt(10) + bSize := len(base.Bytes()) + eSize := len(exponent.Bytes()) + mSize := len(modulus.Bytes()) + inputData := append( + common.LeftPadBytes(big.NewInt(int64(bSize)).Bytes(), 32), + append( + common.LeftPadBytes(big.NewInt(int64(eSize)).Bytes(), 32), + append( + common.LeftPadBytes(big.NewInt(int64(mSize)).Bytes(), 32), + append( + common.LeftPadBytes(base.Bytes(), bSize), + append( + common.LeftPadBytes(exponent.Bytes(), eSize), + common.LeftPadBytes(modulus.Bytes(), mSize)..., + )..., + )..., + )..., + )..., + ) + + return inputData +} + +func GenerateECAddInput() []byte { + x1 := big.NewInt(1) + y1 := big.NewInt(2) + x2 := big.NewInt(1) + y2 := big.NewInt(2) + + // Convert the x and y coordinates to 32-byte arrays in big-endian format + x1Bytes := math.PaddedBigBytes(x1, 32) + y1Bytes := math.PaddedBigBytes(y1, 32) + x2Bytes := math.PaddedBigBytes(x2, 32) + y2Bytes := math.PaddedBigBytes(y2, 32) + + inputData := append(append(append(x1Bytes, y1Bytes...), x2Bytes...), y2Bytes...) + return inputData +} + func CallPrecompiledContracts(address int, lt *LoadTester, opts *bind.TransactOpts, iterations uint64, privateKey *ecdsa.PrivateKey) (*ethtypes.Transaction, error) { var inputData []byte @@ -70,27 +125,23 @@ func CallPrecompiledContracts(address int, lt *LoadTester, opts *bind.TransactOp log.Trace().Str("method", "TestIdentity").Msg("Executing contract method") inputData = GenerateIdentityInput() return lt.TestIdentity(opts, inputData) - // case 4: - // case 5: - // case 6: + case 5: + log.Trace().Str("method", "TestModExp").Msg("Executing contract method") + inputData = GenerateModExpInput() + return lt.TestModExp(opts, inputData) + case 6: + log.Trace().Str("method", "TestECAdd").Msg("Executing contract method") + inputData = GenerateECAddInput() + return lt.TestECAdd(opts, inputData) // case 7: // case 8: // case 9: - // case 10: - // case 11: - // case 12: - // case 13: - // case 14: - // case 15: - // case 16: - // case 17: } return nil, fmt.Errorf("Unrecognized precompiled address %d", address) } func GetRandomPrecompiledContractAddress() int { - n := 4 + n := 6 return rand.Intn(n) + 1 // [1, n + 1) - // return rand.Intn(17) + 1 } From ed7915c4ebacbfe1120d84a4931a9819d81cf1c0 Mon Sep 17 00:00:00 2001 From: Idris Hanafi Date: Thu, 30 Mar 2023 12:33:53 -0400 Subject: [PATCH 5/7] feat: implemented testECMul, testECPairing, and testBlake2f --- cmd/loadtest/loadtest.go | 19 +++-- contracts/LoadTester.abi | 2 +- contracts/LoadTester.bin | 2 +- contracts/LoadTester.sol | 54 +++++++++++++++ contracts/loadtester.go | 67 +++++++++++++++++- contracts/precompiledContracts.go | 111 ++++++++++++++++++++++++++---- 6 files changed, 230 insertions(+), 25 deletions(-) diff --git a/cmd/loadtest/loadtest.go b/cmd/loadtest/loadtest.go index 6488e69f..cc8a7855 100644 --- a/cmd/loadtest/loadtest.go +++ b/cmd/loadtest/loadtest.go @@ -290,8 +290,8 @@ t - sending transactions d - deploy contract c - call random contract functions f - call specific contract function -p - call random precompiled contracts // TODO: Added -a - call a specific precompiled contract address // TODO: Add this feature +p - call random precompiled contracts +a - call a specific precompiled contract address s - store mode l - long running mode r - random modes @@ -538,7 +538,7 @@ func mainLoop(ctx context.Context, c *ethclient.Client, rpc *ethrpc.Client) erro // deploy and instantiate the load tester contract var ltAddr ethcommon.Address var ltContract *contracts.LoadTester - if strings.ContainsAny(mode, "rcfislps") || *inputLoadTestParams.ForceContractDeploy { + if strings.ContainsAny(mode, "rcfislpas") || *inputLoadTestParams.ForceContractDeploy { if *inputLoadTestParams.LtAddress == "" { ltAddr, _, _, err = contracts.DeployLoadTester(tops, c) if err != nil { @@ -755,8 +755,10 @@ func mainLoop(ctx context.Context, c *ethclient.Client, rpc *ethrpc.Client) erro startReq, endReq, err = loadtestERC20(ctx, c, myNonceValue, erc20Contract, ltAddr) case loadTestModeERC721: startReq, endReq, err = loadtestERC721(ctx, c, myNonceValue, erc721Contract, ltAddr) + case loadTestModePrecompiledContract: + startReq, endReq, err = loadtestCallPrecompiledContracts(ctx, c, myNonceValue, ltContract, true) case loadTestModePrecompiledContracts: - startReq, endReq, err = loadtestCallPrecompiledContracts(ctx, c, myNonceValue, ltContract) + startReq, endReq, err = loadtestCallPrecompiledContracts(ctx, c, myNonceValue, ltContract, false) default: log.Error().Str("mode", mode).Msg("We've arrived at a load test mode that we don't recognize") } @@ -929,13 +931,18 @@ func loadtestCall(ctx context.Context, c *ethclient.Client, nonce uint64, ltCont return } -func loadtestCallPrecompiledContracts(ctx context.Context, c *ethclient.Client, nonce uint64, ltContract *contracts.LoadTester) (t1 time.Time, t2 time.Time, err error) { +func loadtestCallPrecompiledContracts(ctx context.Context, c *ethclient.Client, nonce uint64, ltContract *contracts.LoadTester, useSelectedAddress bool) (t1 time.Time, t2 time.Time, err error) { + var f int ltp := inputLoadTestParams chainID := new(big.Int).SetUint64(*ltp.ChainID) privateKey := ltp.ECDSAPrivateKey iterations := ltp.Iterations - f := contracts.GetRandomPrecompiledContractAddress() + if useSelectedAddress { + f = int(*ltp.Function) + } else { + f = contracts.GetRandomPrecompiledContractAddress() + } tops, err := bind.NewKeyedTransactorWithChainID(privateKey, chainID) if err != nil { diff --git a/contracts/LoadTester.abi b/contracts/LoadTester.abi index f3767b12..d2e0ede1 100644 --- a/contracts/LoadTester.abi +++ b/contracts/LoadTester.abi @@ -1 +1 @@ -[{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"dumpster","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCallCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"loopBlockHashUntilLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"loopUntilLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"trash","type":"bytes"}],"name":"store","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testADD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testADDMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testADDRESS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testAND","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBALANCE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBASEFEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBLOCKHASH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBYTE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLDATACOPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLDATALOAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLDATASIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLVALUE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCHAINID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCODECOPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCODESIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCOINBASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testDIFFICULTY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testDIV","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testECAdd","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testECRecover","outputs":[{"internalType":"address","name":"result","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testEQ","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testEXP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testEXTCODESIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGAS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGASLIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGASPRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testISZERO","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testIdentity","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG0","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG4","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMLOAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMSIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMSTORE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMSTORE8","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMUL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMULMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testModExp","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testNOT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testNUMBER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testORIGIN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testRETURNDATACOPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testRETURNDATASIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testRipemd160","outputs":[{"internalType":"bytes20","name":"result","type":"bytes20"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSAR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSDIV","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSELFBALANCE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSGT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testSHA256","outputs":[{"internalType":"bytes32","name":"result","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSHA3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSHL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSHR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSIGNEXTEND","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSLOAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSLT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSSTORE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSUB","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testTIMESTAMP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testXOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file +[{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"dumpster","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCallCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"loopBlockHashUntilLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"loopUntilLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"trash","type":"bytes"}],"name":"store","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testADD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testADDMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testADDRESS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testAND","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBALANCE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBASEFEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBLOCKHASH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBYTE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testBlake2f","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLDATACOPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLDATALOAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLDATASIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLVALUE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCHAINID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCODECOPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCODESIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCOINBASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testDIFFICULTY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testDIV","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testECAdd","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testECMul","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testECPairing","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testECRecover","outputs":[{"internalType":"address","name":"result","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testEQ","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testEXP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testEXTCODESIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGAS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGASLIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGASPRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testISZERO","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testIdentity","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG0","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG4","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMLOAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMSIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMSTORE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMSTORE8","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMUL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMULMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testModExp","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testNOT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testNUMBER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testORIGIN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testRETURNDATACOPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testRETURNDATASIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testRipemd160","outputs":[{"internalType":"bytes20","name":"result","type":"bytes20"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSAR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSDIV","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSELFBALANCE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSGT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testSHA256","outputs":[{"internalType":"bytes32","name":"result","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSHA3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSHL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSHR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSIGNEXTEND","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSLOAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSLT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSSTORE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSUB","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testTIMESTAMP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testXOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/contracts/LoadTester.bin b/contracts/LoadTester.bin index 8383d7af..c8d32967 100644 --- a/contracts/LoadTester.bin +++ b/contracts/LoadTester.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b50612d87806100206000396000f3fe608060405234801561001057600080fd5b50600436106104335760003560e01c80637de8c6f811610236578063bf529ca11161013b578063dd9bef60116100c3578063f279ca8111610087578063f279ca81146110b0578063f4d1fc61146110e0578063f58fc36a14611110578063f6b0bbf714611140578063fde7721c1461117057610433565b8063dd9bef6014610fc0578063de97a36314610ff0578063e9f9b3f214611020578063ea5141e614611050578063edf003cf1461108057610433565b8063ce3cf4ef1161010a578063ce3cf4ef14610ed0578063d117320b14610f00578063d51e7b5b14610f30578063d53ff3fd14610f60578063d93cd55814610f9057610433565b8063bf529ca114610e10578063c360aba614610e40578063c420eb6114610e70578063c4bd65d514610ea057610433565b8063a271b721116101be578063b374012b1161018d578063b374012b14610d20578063b3d847f214610d50578063b7b8620714610d80578063b81c148414610db0578063bdc875fc14610de057610433565b8063a271b72114610c72578063a60a108714610c90578063a645c9c214610cc0578063acaebdf614610cf057610433565b806391e7b2771161020557806391e7b27714610b8257806398456f3e14610bb25780639a2b7c8114610be25780639cce7cf914610c12578063a18683cb14610c4257610433565b80637de8c6f814610ac257806380947f8014610af2578063880eff3914610b22578063918a5fcd14610b5257610433565b80633430ec061161033c57806360e13cde116102c45780636e7f1fe7116102935780636e7f1fe7146109d25780636f099c8d14610a0257806371d91d2814610a325780637b6e0b0e14610a625780637c191d2014610a9257610433565b806360e13cde14610924578063613d0a821461095457806363138d4f14610984578063659bbb4f146109b457610433565b806340fe26621161030b57806340fe26621461083457806344cf3bc7146108645780634a61af1f146108945780634d2c74b3146108c45780635590c2d9146108f457610433565b80633430ec0614610786578063371303c0146107b65780633a411f12146107d45780633a425dfc1461080457610433565b806319b621d6116103bf578063219cddeb1161038e578063219cddeb146106965780632294fc7f146106c65780632871ef85146106f65780632b21ef44146107265780632d34e7981461075657610433565b806319b621d6146105d65780631aba07ea146106065780631de2f343146106365780632007332e1461066657610433565b80631287a68c116104065780631287a68c146104f8578063135d52f7146105165780631581cf1914610546578063165821501461057657806318093b46146105a657610433565b8063034aef7114610438578063050082f814610468578063087b4e84146104985780630ba8a73b146104c8575b600080fd5b610452600480360381019061044d91906124a4565b6111a0565b60405161045f91906124e0565b60405180910390f35b610482600480360381019061047d91906124a4565b6111db565b60405161048f91906124e0565b60405180910390f35b6104b260048036038101906104ad91906124a4565b611216565b6040516104bf91906124e0565b60405180910390f35b6104e260048036038101906104dd91906124a4565b611250565b6040516104ef91906124e0565b60405180910390f35b61050061128c565b60405161050d91906124e0565b60405180910390f35b610530600480360381019061052b91906124a4565b611295565b60405161053d91906124e0565b60405180910390f35b610560600480360381019061055b91906124a4565b6112d1565b60405161056d91906124e0565b60405180910390f35b610590600480360381019061058b91906124a4565b61130c565b60405161059d91906124e0565b60405180910390f35b6105c060048036038101906105bb91906124a4565b611367565b6040516105cd91906124e0565b60405180910390f35b6105f060048036038101906105eb91906124a4565b6113a5565b6040516105fd91906124e0565b60405180910390f35b610620600480360381019061061b91906124a4565b611434565b60405161062d91906124e0565b60405180910390f35b610650600480360381019061064b91906124a4565b61147a565b60405161065d91906124e0565b60405180910390f35b610680600480360381019061067b91906124a4565b6114b8565b60405161068d91906124e0565b60405180910390f35b6106b060048036038101906106ab91906124a4565b6114f4565b6040516106bd91906124e0565b60405180910390f35b6106e060048036038101906106db91906124a4565b61152f565b6040516106ed91906124e0565b60405180910390f35b610710600480360381019061070b91906124a4565b61156e565b60405161071d91906124e0565b60405180910390f35b610740600480360381019061073b91906124a4565b6115a9565b60405161074d91906124e0565b60405180910390f35b610770600480360381019061076b91906124a4565b6115e4565b60405161077d91906124e0565b60405180910390f35b6107a0600480360381019061079b91906124a4565b61161f565b6040516107ad919061258b565b60405180910390f35b6107be6116cb565b6040516107cb91906124e0565b60405180910390f35b6107ee60048036038101906107e991906124a4565b6116ea565b6040516107fb91906124e0565b60405180910390f35b61081e600480360381019061081991906124a4565b611726565b60405161082b91906124e0565b60405180910390f35b61084e600480360381019061084991906124a4565b611762565b60405161085b91906124e0565b60405180910390f35b61087e600480360381019061087991906124a4565b6117a1565b60405161088b91906124e0565b60405180910390f35b6108ae60048036038101906108a991906124a4565b6117dc565b6040516108bb91906124e0565b60405180910390f35b6108de60048036038101906108d991906124a4565b61181a565b6040516108eb91906124e0565b60405180910390f35b61090e600480360381019061090991906124a4565b611855565b60405161091b91906124e0565b60405180910390f35b61093e600480360381019061093991906124a4565b61189a565b60405161094b91906124e0565b60405180910390f35b61096e600480360381019061096991906126e2565b6118d6565b60405161097b919061258b565b60405180910390f35b61099e600480360381019061099991906126e2565b611908565b6040516109ab9190612744565b60405180910390f35b6109bc611934565b6040516109c991906124e0565b60405180910390f35b6109ec60048036038101906109e791906124a4565b611970565b6040516109f991906124e0565b60405180910390f35b610a1c6004803603810190610a1791906124a4565b6119ae565b604051610a2991906124e0565b60405180910390f35b610a4c6004803603810190610a4791906124a4565b6119e9565b604051610a5991906124e0565b60405180910390f35b610a7c6004803603810190610a7791906124a4565b611a27565b604051610a8991906124e0565b60405180910390f35b610aac6004803603810190610aa791906124a4565b611a63565b604051610ab991906124e0565b60405180910390f35b610adc6004803603810190610ad791906124a4565b611a9e565b604051610ae991906124e0565b60405180910390f35b610b0c6004803603810190610b0791906124a4565b611ada565b604051610b1991906124e0565b60405180910390f35b610b3c6004803603810190610b3791906124a4565b611b37565b604051610b4991906124e0565b60405180910390f35b610b6c6004803603810190610b6791906124a4565b611b76565b604051610b7991906124e0565b60405180910390f35b610b9c6004803603810190610b9791906124a4565b611bb1565b604051610ba991906124e0565b60405180910390f35b610bcc6004803603810190610bc791906124a4565b611bfd565b604051610bd991906124e0565b60405180910390f35b610bfc6004803603810190610bf791906124a4565b611c3d565b604051610c0991906124e0565b60405180910390f35b610c2c6004803603810190610c2791906126e2565b611c78565b604051610c39919061258b565b60405180910390f35b610c5c6004803603810190610c5791906126e2565b611ca9565b604051610c6991906127a0565b60405180910390f35b610c7a611d2b565b604051610c8791906124e0565b60405180910390f35b610caa6004803603810190610ca591906124a4565b611d76565b604051610cb791906124e0565b60405180910390f35b610cda6004803603810190610cd591906124a4565b611db1565b604051610ce791906124e0565b60405180910390f35b610d0a6004803603810190610d0591906124a4565b611ded565b604051610d1791906124e0565b60405180910390f35b610d3a6004803603810190610d35919061281b565b611e29565b604051610d4791906124e0565b60405180910390f35b610d6a6004803603810190610d6591906124a4565b611e77565b604051610d7791906124e0565b60405180910390f35b610d9a6004803603810190610d9591906124a4565b611eb2565b604051610da791906124e0565b60405180910390f35b610dca6004803603810190610dc591906124a4565b611eed565b604051610dd791906124e0565b60405180910390f35b610dfa6004803603810190610df591906124a4565b611f28565b604051610e0791906124e0565b60405180910390f35b610e2a6004803603810190610e2591906124a4565b611f63565b604051610e3791906124e0565b60405180910390f35b610e5a6004803603810190610e5591906124a4565b611fa7565b604051610e6791906124e0565b60405180910390f35b610e8a6004803603810190610e8591906124a4565b611fe3565b604051610e9791906124e0565b60405180910390f35b610eba6004803603810190610eb591906124a4565b61201e565b604051610ec791906124e0565b60405180910390f35b610eea6004803603810190610ee591906124a4565b61205c565b604051610ef791906124e0565b60405180910390f35b610f1a6004803603810190610f1591906124a4565b612099565b604051610f2791906124e0565b60405180910390f35b610f4a6004803603810190610f4591906124a4565b6120d3565b604051610f5791906124e0565b60405180910390f35b610f7a6004803603810190610f7591906124a4565b61210f565b604051610f8791906124e0565b60405180910390f35b610faa6004803603810190610fa591906124a4565b61214b565b604051610fb791906124e0565b60405180910390f35b610fda6004803603810190610fd591906124a4565b6121a6565b604051610fe791906124e0565b60405180910390f35b61100a600480360381019061100591906124a4565b6121e8565b60405161101791906124e0565b60405180910390f35b61103a600480360381019061103591906124a4565b612224565b60405161104791906124e0565b60405180910390f35b61106a600480360381019061106591906124a4565b612261565b60405161107791906124e0565b60405180910390f35b61109a600480360381019061109591906126e2565b6122a3565b6040516110a7919061258b565b60405180910390f35b6110ca60048036038101906110c591906124a4565b612312565b6040516110d791906124e0565b60405180910390f35b6110fa60048036038101906110f591906124a4565b61234e565b60405161110791906124e0565b60405180910390f35b61112a600480360381019061112591906124a4565b61238c565b60405161113791906124e0565b60405180910390f35b61115a600480360381019061115591906126e2565b6123cb565b60405161116791906128a3565b60405180910390f35b61118a600480360381019061118591906124a4565b6123fd565b60405161119791906124e0565b60405180910390f35b60006111aa6116cb565b50600065deadbeef003690506000805b848110156111d0573691506001810190506111ba565b505080915050919050565b60006111e56116cb565b50600065deadbeef003290506000805b8481101561120b573291506001810190506111f5565b505080915050919050565b60006112206116cb565b50600065deadbeef0052905060005b83811015611246578160005260018101905061122f565b5080915050919050565b600061125a6116cb565b50600065deadbeef0001905060005b8381101561128257600082019150600181019050611269565b5080915050919050565b60008054905090565b600061129f6116cb565b50600065deadbeef0017905060005b838110156112c7576000821791506001810190506112ae565b5080915050919050565b60006112db6116cb565b50600065deadbeef003490506000805b84811015611301573491506001810190506112eb565b505080915050919050565b60006113166116cb565b50600065deadbeef0006905060005b8381101561135d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82069150600181019050611325565b5080915050919050565b60006113716116cb565b50600065deadbeef001390506000805b8481101561139a57600183139150600181019050611381565b505080915050919050565b60006113af6116cb565b50600065deadbeef002090507fffffffff000000000000000000000000000000000000000000000000000000006000526000805b848110156113fd57600460002091506001810190506113e3565b507f29045a592007d0c246ef02c2223570da9522d0cf0f73282c79a1bc8f0bb2c238811461142a57600091505b5080915050919050565b600061143e6116cb565b50600065deadbeef00a490508060105260005b83811015611470576004600360028360066010a4600181019050611451565b5080915050919050565b60006114846116cb565b50600065deadbeef001a90506000805b848110156114ad578260001a9150600181019050611494565b505080915050919050565b60006114c26116cb565b50600065deadbeef001b905060005b838110156114ea578160001b91506001810190506114d1565b5080915050919050565b60006114fe6116cb565b50600065deadbeef004290506000805b848110156115245742915060018101905061150e565b505080915050919050565b60006115396116cb565b50600065deadbeef0031905060003060005b85811015611562578131925060018101905061154b565b50505080915050919050565b60006115786116cb565b50600065deadbeef004890506000805b8481101561159e57489150600181019050611588565b505080915050919050565b60006115b36116cb565b50600065deadbeef003d90506000805b848110156115d9573d91506001810190506115c3565b505080915050919050565b60006115ee6116cb565b50600065deadbeef004390506000805b84811015611614574391506001810190506115fe565b505080915050919050565b6002818154811061162f57600080fd5b90600052602060002001600091509050805461164a906128ed565b80601f0160208091040260200160405190810160405280929190818152602001828054611676906128ed565b80156116c35780601f10611698576101008083540402835291602001916116c3565b820191906000526020600020905b8154815290600101906020018083116116a657829003601f168201915b505050505081565b600060016000546116dc919061294d565b600081905550600054905090565b60006116f46116cb565b50600065deadbeef0004905060005b8381101561171c57600182049150600181019050611703565b5080915050919050565b60006117306116cb565b50600065deadbeef0037905060005b838110156117585760206000803760018101905061173f565b5080915050919050565b600061176c6116cb565b50600065deadbeef00a090508060105260005b838110156117975760066010a060018101905061177f565b5080915050919050565b60006117ab6116cb565b50600065deadbeef003390506000805b848110156117d1573391506001810190506117bb565b505080915050919050565b60006117e66116cb565b50600065deadbeef0053905060005b838110156118105763deadbeef6000526001810190506117f5565b5080915050919050565b60006118246116cb565b50600065deadbeef003a90506000805b8481101561184a573a9150600181019050611834565b505080915050919050565b600061185f6116cb565b50600065deadbeef0051905060008160005260005b8481101561188c576000519150600181019050611874565b508091505080915050919050565b60006118a46116cb565b50600065deadbeef001d905060005b838110156118cc578160001d91506001810190506118b3565b5080915050919050565b606060006005905060208301835160405160208183856000885af1806118fb57600080fd5b8195505050505050919050565b600080600290506020830183518360208183856000885af18061192a57600080fd5b5050505050919050565b600061193e6116cb565b505b6103e85a111561196857600180600082825461195c919061294d565b92505081905550611940565b600154905090565b600061197a6116cb565b50600065deadbeef001090506000805b848110156119a35782600110915060018101905061198a565b505080915050919050565b60006119b86116cb565b50600065deadbeef004490506000805b848110156119de574491506001810190506119c8565b505080915050919050565b60006119f36116cb565b50600065deadbeef001190506000805b84811015611a1c57600183119150600181019050611a03565b505080915050919050565b6000611a316116cb565b50600065deadbeef003e905060005b83811015611a595760206000803e600181019050611a40565b5080915050919050565b6000611a6d6116cb565b50600065deadbeef004590506000805b84811015611a9357459150600181019050611a7d565b505080915050919050565b6000611aa86116cb565b50600065deadbeef0002905060005b83811015611ad057600182029150600181019050611ab7565b5080915050919050565b6000611ae46116cb565b50600065deadbeef0008905060005b83811015611b2d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600083089150600181019050611af3565b5080915050919050565b6000611b416116cb565b50600065deadbeef005490508060005560005b83811015611b6c576000549150600181019050611b54565b5080915050919050565b6000611b806116cb565b50600065deadbeef005a90506000805b84811015611ba6575a9150600181019050611b90565b505080915050919050565b6000611bbb6116cb565b50600065deadbeef0019905060005b83811015611be15781199150600181019050611bca565b5065deadbeef00198114611bf457801990505b80915050919050565b6000611c076116cb565b50600065deadbeef00a190508060105260005b83811015611c33578060066010a1600181019050611c1a565b5080915050919050565b6000611c476116cb565b50600065deadbeef0016905060005b83811015611c6e578182169150600181019050611c56565b5080915050919050565b6060600060049050602083018351604051818183856000885af180611c9c57600080fd5b8195505050505050919050565b60006080825114611cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce6906129de565b60405180910390fd5b600060019050602083016020810151601f1a602082015260206040516080836000865af180611d1d57600080fd5b604051519350505050919050565b6000611d356116cb565b505b6103e85a1115611d6e576001806000828254611d53919061294d565b9250508190555043600154611d689190612a2d565b50611d37565b600154905090565b6000611d806116cb565b50600065deadbeef004690506000805b84811015611da657469150600181019050611d90565b505080915050919050565b6000611dbb6116cb565b50600065deadbeef0005905060005b83811015611de357600182059150600181019050611dca565b5080915050919050565b6000611df76116cb565b50600065deadbeef0039905060005b83811015611e1f57602060008039600181019050611e06565b5080915050919050565b60006002838390918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611e68929190612c15565b50600280549050905092915050565b6000611e816116cb565b50600065deadbeef005990506000805b84811015611ea757599150600181019050611e91565b505080915050919050565b6000611ebc6116cb565b50600065deadbeef003890506000805b84811015611ee257389150600181019050611ecc565b505080915050919050565b6000611ef76116cb565b50600065deadbeef004190506000805b84811015611f1d57419150600181019050611f07565b505080915050919050565b6000611f326116cb565b50600065deadbeef003090506000805b84811015611f5857309150600181019050611f42565b505080915050919050565b6000611f6d6116cb565b50600065deadbeef00a390508060105260005b83811015611f9d57600360028260066010a3600181019050611f80565b5080915050919050565b6000611fb16116cb565b50600065deadbeef000b905060005b83811015611fd9578160200b9150600181019050611fc0565b5080915050919050565b6000611fed6116cb565b50600065deadbeef004790506000805b8481101561201357479150600181019050611ffd565b505080915050919050565b60006120286116cb565b50600065deadbeef001c90506000805b84811015612051578260001c9250600181019050612038565b505080915050919050565b60006120666116cb565b50600065deadbeef003590506000805b8481101561208e576000359150600181019050612076565b505080915050919050565b60006120a36116cb565b50600065deadbeef0055905060005b838110156120c957816000556001810190506120b2565b5080915050919050565b60006120dd6116cb565b50600065deadbeef0018905060005b83811015612105576000821891506001810190506120ec565b5080915050919050565b60006121196116cb565b50600065deadbeef0003905060005b8381101561214157600082039150600181019050612128565b5080915050919050565b60006121556116cb565b50600065deadbeef0007905060005b8381101561219c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82079150600181019050612164565b5080915050919050565b60006121b06116cb565b50600065deadbeef00a290508060105260005b838110156121de5760028160066010a26001810190506121c3565b5080915050919050565b60006121f26116cb565b50600065deadbeef000a905060005b8381101561221a576001820a9150600181019050612201565b5080915050919050565b600061222e6116cb565b50600065deadbeef001490506000805b8481101561225657828314915060018101905061223e565b505080915050919050565b600061226b6116cb565b50600065deadbeef0040905060006001430360005b858110156122975781409250600181019050612280565b50505080915050919050565b606060808251146122e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e090612d31565b60405180910390fd5b60006006905060208301835160408482846000875af18061230957600080fd5b50505050919050565b600061231c6116cb565b50600065deadbeef001590506000805b84811015612343578215915060018101905061232c565b505080915050919050565b60006123586116cb565b50600065deadbeef001290506000805b8481101561238157826001129150600181019050612368565b505080915050919050565b60006123966116cb565b50600065deadbeef003b905060003060005b858110156123bf57813b92506001810190506123a8565b50505080915050919050565b6000806003905060208301835160405160148183856000885af1806123ef57600080fd5b815195505050505050919050565b60006124076116cb565b50600065deadbeef0009905060005b83811015612450577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600183099150600181019050612416565b5080915050919050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6124818161246e565b811461248c57600080fd5b50565b60008135905061249e81612478565b92915050565b6000602082840312156124ba576124b9612464565b5b60006124c88482850161248f565b91505092915050565b6124da8161246e565b82525050565b60006020820190506124f560008301846124d1565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561253557808201518184015260208101905061251a565b60008484015250505050565b6000601f19601f8301169050919050565b600061255d826124fb565b6125678185612506565b9350612577818560208601612517565b61258081612541565b840191505092915050565b600060208201905081810360008301526125a58184612552565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6125ef82612541565b810181811067ffffffffffffffff8211171561260e5761260d6125b7565b5b80604052505050565b600061262161245a565b905061262d82826125e6565b919050565b600067ffffffffffffffff82111561264d5761264c6125b7565b5b61265682612541565b9050602081019050919050565b82818337600083830152505050565b600061268561268084612632565b612617565b9050828152602081018484840111156126a1576126a06125b2565b5b6126ac848285612663565b509392505050565b600082601f8301126126c9576126c86125ad565b5b81356126d9848260208601612672565b91505092915050565b6000602082840312156126f8576126f7612464565b5b600082013567ffffffffffffffff81111561271657612715612469565b5b612722848285016126b4565b91505092915050565b6000819050919050565b61273e8161272b565b82525050565b60006020820190506127596000830184612735565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061278a8261275f565b9050919050565b61279a8161277f565b82525050565b60006020820190506127b56000830184612791565b92915050565b600080fd5b600080fd5b60008083601f8401126127db576127da6125ad565b5b8235905067ffffffffffffffff8111156127f8576127f76127bb565b5b602083019150836001820283011115612814576128136127c0565b5b9250929050565b6000806020838503121561283257612831612464565b5b600083013567ffffffffffffffff8111156128505761284f612469565b5b61285c858286016127c5565b92509250509250929050565b60007fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b61289d81612868565b82525050565b60006020820190506128b86000830184612894565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061290557607f821691505b602082108103612918576129176128be565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129588261246e565b91506129638361246e565b925082820190508082111561297b5761297a61291e565b5b92915050565b600082825260208201905092915050565b7f496e76616c696420696e7075742064617461206c656e6774682e000000000000600082015250565b60006129c8601a83612981565b91506129d382612992565b602082019050919050565b600060208201905081810360008301526129f7816129bb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a388261246e565b9150612a438361246e565b925082612a5357612a526129fe565b5b828206905092915050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612acb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612a8e565b612ad58683612a8e565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612b12612b0d612b088461246e565b612aed565b61246e565b9050919050565b6000819050919050565b612b2c83612af7565b612b40612b3882612b19565b848454612a9b565b825550505050565b600090565b612b55612b48565b612b60818484612b23565b505050565b5b81811015612b8457612b79600082612b4d565b600181019050612b66565b5050565b601f821115612bc957612b9a81612a69565b612ba384612a7e565b81016020851015612bb2578190505b612bc6612bbe85612a7e565b830182612b65565b50505b505050565b600082821c905092915050565b6000612bec60001984600802612bce565b1980831691505092915050565b6000612c058383612bdb565b9150826002028217905092915050565b612c1f8383612a5e565b67ffffffffffffffff811115612c3857612c376125b7565b5b612c4282546128ed565b612c4d828285612b88565b6000601f831160018114612c7c5760008415612c6a578287013590505b612c748582612bf9565b865550612cdc565b601f198416612c8a86612a69565b60005b82811015612cb257848901358255600182019150602085019450602081019050612c8d565b86831015612ccf5784890135612ccb601f891682612bdb565b8355505b6001600288020188555050505b50505050505050565b7f496e76616c696420696e707574206c656e677468000000000000000000000000600082015250565b6000612d1b601483612981565b9150612d2682612ce5565b602082019050919050565b60006020820190508181036000830152612d4a81612d0e565b905091905056fea26469706673582212201b540fbef3fb329c62d3c5ab4a168060872273585e8bfe8b9988c68073c175d464736f6c63430008130033 \ No newline at end of file +608060405234801561001057600080fd5b50612ef4806100206000396000f3fe608060405234801561001057600080fd5b50600436106104545760003560e01c806380947f8011610241578063bf529ca11161013b578063dd9bef60116100c3578063f279ca8111610087578063f279ca8114611161578063f4d1fc6114611191578063f58fc36a146111c1578063f6b0bbf7146111f1578063fde7721c1461122157610454565b8063dd9bef6014611071578063de97a363146110a1578063e9f9b3f2146110d1578063ea5141e614611101578063edf003cf1461113157610454565b8063ce3cf4ef1161010a578063ce3cf4ef14610f81578063d117320b14610fb1578063d51e7b5b14610fe1578063d53ff3fd14611011578063d93cd5581461104157610454565b8063bf529ca114610ec1578063c360aba614610ef1578063c420eb6114610f21578063c4bd65d514610f5157610454565b8063a18683cb116101c9578063b374012b1161018d578063b374012b14610dd1578063b3d847f214610e01578063b7b8620714610e31578063b81c148414610e61578063bdc875fc14610e9157610454565b8063a18683cb14610cf3578063a271b72114610d23578063a60a108714610d41578063a645c9c214610d71578063acaebdf614610da157610454565b8063962e4dc211610210578063962e4dc214610c0357806398456f3e14610c335780639a2b7c8114610c635780639cce7cf914610c93578063a040aec614610cc357610454565b806380947f8014610b43578063880eff3914610b73578063918a5fcd14610ba357806391e7b27714610bd357610454565b80633430ec061161035257806360e13cde116102da5780636f099c8d1161029e5780636f099c8d14610a5357806371d91d2814610a835780637b6e0b0e14610ab35780637c191d2014610ae35780637de8c6f814610b1357610454565b806360e13cde14610975578063613d0a82146109a557806363138d4f146109d5578063659bbb4f14610a055780636e7f1fe714610a2357610454565b806340fe26621161032157806340fe26621461088557806344cf3bc7146108b55780634a61af1f146108e55780634d2c74b3146109155780635590c2d91461094557610454565b80633430ec06146107d7578063371303c0146108075780633a411f12146108255780633a425dfc1461085557610454565b806318093b46116103e0578063219cddeb116103a4578063219cddeb146106e75780632294fc7f146107175780632871ef85146107475780632b21ef44146107775780632d34e798146107a757610454565b806318093b46146105f757806319b621d6146106275780631aba07ea146106575780631de2f343146106875780632007332e146106b757610454565b80630ba8a73b116104275780630ba8a73b146105195780631287a68c14610549578063135d52f7146105675780631581cf191461059757806316582150146105c757610454565b8063034aef7114610459578063050082f814610489578063087b4e84146104b95780630b3b996a146104e9575b600080fd5b610473600480360381019061046e9190612611565b611251565b604051610480919061264d565b60405180910390f35b6104a3600480360381019061049e9190612611565b61128c565b6040516104b0919061264d565b60405180910390f35b6104d360048036038101906104ce9190612611565b6112c7565b6040516104e0919061264d565b60405180910390f35b61050360048036038101906104fe91906127ae565b611301565b6040516105109190612876565b60405180910390f35b610533600480360381019061052e9190612611565b611328565b604051610540919061264d565b60405180910390f35b610551611364565b60405161055e919061264d565b60405180910390f35b610581600480360381019061057c9190612611565b61136d565b60405161058e919061264d565b60405180910390f35b6105b160048036038101906105ac9190612611565b6113a9565b6040516105be919061264d565b60405180910390f35b6105e160048036038101906105dc9190612611565b6113e4565b6040516105ee919061264d565b60405180910390f35b610611600480360381019061060c9190612611565b61143f565b60405161061e919061264d565b60405180910390f35b610641600480360381019061063c9190612611565b61147d565b60405161064e919061264d565b60405180910390f35b610671600480360381019061066c9190612611565b61150c565b60405161067e919061264d565b60405180910390f35b6106a1600480360381019061069c9190612611565b611552565b6040516106ae919061264d565b60405180910390f35b6106d160048036038101906106cc9190612611565b611590565b6040516106de919061264d565b60405180910390f35b61070160048036038101906106fc9190612611565b6115cc565b60405161070e919061264d565b60405180910390f35b610731600480360381019061072c9190612611565b611607565b60405161073e919061264d565b60405180910390f35b610761600480360381019061075c9190612611565b611646565b60405161076e919061264d565b60405180910390f35b610791600480360381019061078c9190612611565b611681565b60405161079e919061264d565b60405180910390f35b6107c160048036038101906107bc9190612611565b6116bc565b6040516107ce919061264d565b60405180910390f35b6107f160048036038101906107ec9190612611565b6116f7565b6040516107fe9190612876565b60405180910390f35b61080f6117a3565b60405161081c919061264d565b60405180910390f35b61083f600480360381019061083a9190612611565b6117c2565b60405161084c919061264d565b60405180910390f35b61086f600480360381019061086a9190612611565b6117fe565b60405161087c919061264d565b60405180910390f35b61089f600480360381019061089a9190612611565b61183a565b6040516108ac919061264d565b60405180910390f35b6108cf60048036038101906108ca9190612611565b611879565b6040516108dc919061264d565b60405180910390f35b6108ff60048036038101906108fa9190612611565b6118b4565b60405161090c919061264d565b60405180910390f35b61092f600480360381019061092a9190612611565b6118f2565b60405161093c919061264d565b60405180910390f35b61095f600480360381019061095a9190612611565b61192d565b60405161096c919061264d565b60405180910390f35b61098f600480360381019061098a9190612611565b611972565b60405161099c919061264d565b60405180910390f35b6109bf60048036038101906109ba91906127ae565b6119ae565b6040516109cc9190612876565b60405180910390f35b6109ef60048036038101906109ea91906127ae565b6119e0565b6040516109fc91906128b1565b60405180910390f35b610a0d611a0c565b604051610a1a919061264d565b60405180910390f35b610a3d6004803603810190610a389190612611565b611a48565b604051610a4a919061264d565b60405180910390f35b610a6d6004803603810190610a689190612611565b611a86565b604051610a7a919061264d565b60405180910390f35b610a9d6004803603810190610a989190612611565b611ac1565b604051610aaa919061264d565b60405180910390f35b610acd6004803603810190610ac89190612611565b611aff565b604051610ada919061264d565b60405180910390f35b610afd6004803603810190610af89190612611565b611b3b565b604051610b0a919061264d565b60405180910390f35b610b2d6004803603810190610b289190612611565b611b76565b604051610b3a919061264d565b60405180910390f35b610b5d6004803603810190610b589190612611565b611bb2565b604051610b6a919061264d565b60405180910390f35b610b8d6004803603810190610b889190612611565b611c0f565b604051610b9a919061264d565b60405180910390f35b610bbd6004803603810190610bb89190612611565b611c4e565b604051610bca919061264d565b60405180910390f35b610bed6004803603810190610be89190612611565b611c89565b604051610bfa919061264d565b60405180910390f35b610c1d6004803603810190610c1891906127ae565b611cd5565b604051610c2a9190612876565b60405180910390f35b610c4d6004803603810190610c489190612611565b611d43565b604051610c5a919061264d565b60405180910390f35b610c7d6004803603810190610c789190612611565b611d83565b604051610c8a919061264d565b60405180910390f35b610cad6004803603810190610ca891906127ae565b611dbe565b604051610cba9190612876565b60405180910390f35b610cdd6004803603810190610cd891906127ae565b611def565b604051610cea9190612876565b60405180910390f35b610d0d6004803603810190610d0891906127ae565b611e16565b604051610d1a919061290d565b60405180910390f35b610d2b611e98565b604051610d38919061264d565b60405180910390f35b610d5b6004803603810190610d569190612611565b611ee3565b604051610d68919061264d565b60405180910390f35b610d8b6004803603810190610d869190612611565b611f1e565b604051610d98919061264d565b60405180910390f35b610dbb6004803603810190610db69190612611565b611f5a565b604051610dc8919061264d565b60405180910390f35b610deb6004803603810190610de69190612988565b611f96565b604051610df8919061264d565b60405180910390f35b610e1b6004803603810190610e169190612611565b611fe4565b604051610e28919061264d565b60405180910390f35b610e4b6004803603810190610e469190612611565b61201f565b604051610e58919061264d565b60405180910390f35b610e7b6004803603810190610e769190612611565b61205a565b604051610e88919061264d565b60405180910390f35b610eab6004803603810190610ea69190612611565b612095565b604051610eb8919061264d565b60405180910390f35b610edb6004803603810190610ed69190612611565b6120d0565b604051610ee8919061264d565b60405180910390f35b610f0b6004803603810190610f069190612611565b612114565b604051610f18919061264d565b60405180910390f35b610f3b6004803603810190610f369190612611565b612150565b604051610f48919061264d565b60405180910390f35b610f6b6004803603810190610f669190612611565b61218b565b604051610f78919061264d565b60405180910390f35b610f9b6004803603810190610f969190612611565b6121c9565b604051610fa8919061264d565b60405180910390f35b610fcb6004803603810190610fc69190612611565b612206565b604051610fd8919061264d565b60405180910390f35b610ffb6004803603810190610ff69190612611565b612240565b604051611008919061264d565b60405180910390f35b61102b60048036038101906110269190612611565b61227c565b604051611038919061264d565b60405180910390f35b61105b60048036038101906110569190612611565b6122b8565b604051611068919061264d565b60405180910390f35b61108b60048036038101906110869190612611565b612313565b604051611098919061264d565b60405180910390f35b6110bb60048036038101906110b69190612611565b612355565b6040516110c8919061264d565b60405180910390f35b6110eb60048036038101906110e69190612611565b612391565b6040516110f8919061264d565b60405180910390f35b61111b60048036038101906111169190612611565b6123ce565b604051611128919061264d565b60405180910390f35b61114b600480360381019061114691906127ae565b612410565b6040516111589190612876565b60405180910390f35b61117b60048036038101906111769190612611565b61247f565b604051611188919061264d565b60405180910390f35b6111ab60048036038101906111a69190612611565b6124bb565b6040516111b8919061264d565b60405180910390f35b6111db60048036038101906111d69190612611565b6124f9565b6040516111e8919061264d565b60405180910390f35b61120b600480360381019061120691906127ae565b612538565b6040516112189190612a10565b60405180910390f35b61123b60048036038101906112369190612611565b61256a565b604051611248919061264d565b60405180910390f35b600061125b6117a3565b50600065deadbeef003690506000805b848110156112815736915060018101905061126b565b505080915050919050565b60006112966117a3565b50600065deadbeef003290506000805b848110156112bc573291506001810190506112a6565b505080915050919050565b60006112d16117a3565b50600065deadbeef0052905060005b838110156112f757816000526001810190506112e0565b5080915050919050565b60606000600890506040828451602086016000855af18061132157600080fd5b5050919050565b60006113326117a3565b50600065deadbeef0001905060005b8381101561135a57600082019150600181019050611341565b5080915050919050565b60008054905090565b60006113776117a3565b50600065deadbeef0017905060005b8381101561139f57600082179150600181019050611386565b5080915050919050565b60006113b36117a3565b50600065deadbeef003490506000805b848110156113d9573491506001810190506113c3565b505080915050919050565b60006113ee6117a3565b50600065deadbeef0006905060005b83811015611435577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820691506001810190506113fd565b5080915050919050565b60006114496117a3565b50600065deadbeef001390506000805b8481101561147257600183139150600181019050611459565b505080915050919050565b60006114876117a3565b50600065deadbeef002090507fffffffff000000000000000000000000000000000000000000000000000000006000526000805b848110156114d557600460002091506001810190506114bb565b507f29045a592007d0c246ef02c2223570da9522d0cf0f73282c79a1bc8f0bb2c238811461150257600091505b5080915050919050565b60006115166117a3565b50600065deadbeef00a490508060105260005b83811015611548576004600360028360066010a4600181019050611529565b5080915050919050565b600061155c6117a3565b50600065deadbeef001a90506000805b84811015611585578260001a915060018101905061156c565b505080915050919050565b600061159a6117a3565b50600065deadbeef001b905060005b838110156115c2578160001b91506001810190506115a9565b5080915050919050565b60006115d66117a3565b50600065deadbeef004290506000805b848110156115fc574291506001810190506115e6565b505080915050919050565b60006116116117a3565b50600065deadbeef0031905060003060005b8581101561163a5781319250600181019050611623565b50505080915050919050565b60006116506117a3565b50600065deadbeef004890506000805b8481101561167657489150600181019050611660565b505080915050919050565b600061168b6117a3565b50600065deadbeef003d90506000805b848110156116b1573d915060018101905061169b565b505080915050919050565b60006116c66117a3565b50600065deadbeef004390506000805b848110156116ec574391506001810190506116d6565b505080915050919050565b6002818154811061170757600080fd5b90600052602060002001600091509050805461172290612a5a565b80601f016020809104026020016040519081016040528092919081815260200182805461174e90612a5a565b801561179b5780601f106117705761010080835404028352916020019161179b565b820191906000526020600020905b81548152906001019060200180831161177e57829003601f168201915b505050505081565b600060016000546117b49190612aba565b600081905550600054905090565b60006117cc6117a3565b50600065deadbeef0004905060005b838110156117f4576001820491506001810190506117db565b5080915050919050565b60006118086117a3565b50600065deadbeef0037905060005b8381101561183057602060008037600181019050611817565b5080915050919050565b60006118446117a3565b50600065deadbeef00a090508060105260005b8381101561186f5760066010a0600181019050611857565b5080915050919050565b60006118836117a3565b50600065deadbeef003390506000805b848110156118a957339150600181019050611893565b505080915050919050565b60006118be6117a3565b50600065deadbeef0053905060005b838110156118e85763deadbeef6000526001810190506118cd565b5080915050919050565b60006118fc6117a3565b50600065deadbeef003a90506000805b84811015611922573a915060018101905061190c565b505080915050919050565b60006119376117a3565b50600065deadbeef0051905060008160005260005b8481101561196457600051915060018101905061194c565b508091505080915050919050565b600061197c6117a3565b50600065deadbeef001d905060005b838110156119a4578160001d915060018101905061198b565b5080915050919050565b606060006005905060208301835160405160208183856000885af1806119d357600080fd5b8195505050505050919050565b600080600290506020830183518360208183856000885af180611a0257600080fd5b5050505050919050565b6000611a166117a3565b505b6103e85a1115611a40576001806000828254611a349190612aba565b92505081905550611a18565b600154905090565b6000611a526117a3565b50600065deadbeef001090506000805b84811015611a7b57826001109150600181019050611a62565b505080915050919050565b6000611a906117a3565b50600065deadbeef004490506000805b84811015611ab657449150600181019050611aa0565b505080915050919050565b6000611acb6117a3565b50600065deadbeef001190506000805b84811015611af457600183119150600181019050611adb565b505080915050919050565b6000611b096117a3565b50600065deadbeef003e905060005b83811015611b315760206000803e600181019050611b18565b5080915050919050565b6000611b456117a3565b50600065deadbeef004590506000805b84811015611b6b57459150600181019050611b55565b505080915050919050565b6000611b806117a3565b50600065deadbeef0002905060005b83811015611ba857600182029150600181019050611b8f565b5080915050919050565b6000611bbc6117a3565b50600065deadbeef0008905060005b83811015611c05577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600083089150600181019050611bcb565b5080915050919050565b6000611c196117a3565b50600065deadbeef005490508060005560005b83811015611c44576000549150600181019050611c2c565b5080915050919050565b6000611c586117a3565b50600065deadbeef005a90506000805b84811015611c7e575a9150600181019050611c68565b505080915050919050565b6000611c936117a3565b50600065deadbeef0019905060005b83811015611cb95781199150600181019050611ca2565b5065deadbeef00198114611ccc57801990505b80915050919050565b606080825114611d1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1190612b4b565b60405180910390fd5b60006007905060208301835160408482846000875af180611d3a57600080fd5b50505050919050565b6000611d4d6117a3565b50600065deadbeef00a190508060105260005b83811015611d79578060066010a1600181019050611d60565b5080915050919050565b6000611d8d6117a3565b50600065deadbeef0016905060005b83811015611db4578182169150600181019050611d9c565b5080915050919050565b6060600060049050602083018351604051818183856000885af180611de257600080fd5b8195505050505050919050565b60606000600890506040828451602086016000855af180611e0f57600080fd5b5050919050565b60006080825114611e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5390612bb7565b60405180910390fd5b600060019050602083016020810151601f1a602082015260206040516080836000865af180611e8a57600080fd5b604051519350505050919050565b6000611ea26117a3565b505b6103e85a1115611edb576001806000828254611ec09190612aba565b9250508190555043600154611ed59190612c06565b50611ea4565b600154905090565b6000611eed6117a3565b50600065deadbeef004690506000805b84811015611f1357469150600181019050611efd565b505080915050919050565b6000611f286117a3565b50600065deadbeef0005905060005b83811015611f5057600182059150600181019050611f37565b5080915050919050565b6000611f646117a3565b50600065deadbeef0039905060005b83811015611f8c57602060008039600181019050611f73565b5080915050919050565b60006002838390918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611fd5929190612dee565b50600280549050905092915050565b6000611fee6117a3565b50600065deadbeef005990506000805b8481101561201457599150600181019050611ffe565b505080915050919050565b60006120296117a3565b50600065deadbeef003890506000805b8481101561204f57389150600181019050612039565b505080915050919050565b60006120646117a3565b50600065deadbeef004190506000805b8481101561208a57419150600181019050612074565b505080915050919050565b600061209f6117a3565b50600065deadbeef003090506000805b848110156120c5573091506001810190506120af565b505080915050919050565b60006120da6117a3565b50600065deadbeef00a390508060105260005b8381101561210a57600360028260066010a36001810190506120ed565b5080915050919050565b600061211e6117a3565b50600065deadbeef000b905060005b83811015612146578160200b915060018101905061212d565b5080915050919050565b600061215a6117a3565b50600065deadbeef004790506000805b848110156121805747915060018101905061216a565b505080915050919050565b60006121956117a3565b50600065deadbeef001c90506000805b848110156121be578260001c92506001810190506121a5565b505080915050919050565b60006121d36117a3565b50600065deadbeef003590506000805b848110156121fb5760003591506001810190506121e3565b505080915050919050565b60006122106117a3565b50600065deadbeef0055905060005b83811015612236578160005560018101905061221f565b5080915050919050565b600061224a6117a3565b50600065deadbeef0018905060005b8381101561227257600082189150600181019050612259565b5080915050919050565b60006122866117a3565b50600065deadbeef0003905060005b838110156122ae57600082039150600181019050612295565b5080915050919050565b60006122c26117a3565b50600065deadbeef0007905060005b83811015612309577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820791506001810190506122d1565b5080915050919050565b600061231d6117a3565b50600065deadbeef00a290508060105260005b8381101561234b5760028160066010a2600181019050612330565b5080915050919050565b600061235f6117a3565b50600065deadbeef000a905060005b83811015612387576001820a915060018101905061236e565b5080915050919050565b600061239b6117a3565b50600065deadbeef001490506000805b848110156123c35782831491506001810190506123ab565b505080915050919050565b60006123d86117a3565b50600065deadbeef0040905060006001430360005b8581101561240457814092506001810190506123ed565b50505080915050919050565b60606080825114612456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244d90612b4b565b60405180910390fd5b60006006905060208301835160408482846000875af18061247657600080fd5b50505050919050565b60006124896117a3565b50600065deadbeef001590506000805b848110156124b05782159150600181019050612499565b505080915050919050565b60006124c56117a3565b50600065deadbeef001290506000805b848110156124ee578260011291506001810190506124d5565b505080915050919050565b60006125036117a3565b50600065deadbeef003b905060003060005b8581101561252c57813b9250600181019050612515565b50505080915050919050565b6000806003905060208301835160405160148183856000885af18061255c57600080fd5b815195505050505050919050565b60006125746117a3565b50600065deadbeef0009905060005b838110156125bd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600183099150600181019050612583565b5080915050919050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6125ee816125db565b81146125f957600080fd5b50565b60008135905061260b816125e5565b92915050565b600060208284031215612627576126266125d1565b5b6000612635848285016125fc565b91505092915050565b612647816125db565b82525050565b6000602082019050612662600083018461263e565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6126bb82612672565b810181811067ffffffffffffffff821117156126da576126d9612683565b5b80604052505050565b60006126ed6125c7565b90506126f982826126b2565b919050565b600067ffffffffffffffff82111561271957612718612683565b5b61272282612672565b9050602081019050919050565b82818337600083830152505050565b600061275161274c846126fe565b6126e3565b90508281526020810184848401111561276d5761276c61266d565b5b61277884828561272f565b509392505050565b600082601f83011261279557612794612668565b5b81356127a584826020860161273e565b91505092915050565b6000602082840312156127c4576127c36125d1565b5b600082013567ffffffffffffffff8111156127e2576127e16125d6565b5b6127ee84828501612780565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612831578082015181840152602081019050612816565b60008484015250505050565b6000612848826127f7565b6128528185612802565b9350612862818560208601612813565b61286b81612672565b840191505092915050565b60006020820190508181036000830152612890818461283d565b905092915050565b6000819050919050565b6128ab81612898565b82525050565b60006020820190506128c660008301846128a2565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128f7826128cc565b9050919050565b612907816128ec565b82525050565b600060208201905061292260008301846128fe565b92915050565b600080fd5b600080fd5b60008083601f84011261294857612947612668565b5b8235905067ffffffffffffffff81111561296557612964612928565b5b6020830191508360018202830111156129815761298061292d565b5b9250929050565b6000806020838503121561299f5761299e6125d1565b5b600083013567ffffffffffffffff8111156129bd576129bc6125d6565b5b6129c985828601612932565b92509250509250929050565b60007fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b612a0a816129d5565b82525050565b6000602082019050612a256000830184612a01565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612a7257607f821691505b602082108103612a8557612a84612a2b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612ac5826125db565b9150612ad0836125db565b9250828201905080821115612ae857612ae7612a8b565b5b92915050565b600082825260208201905092915050565b7f496e76616c696420696e707574206c656e677468000000000000000000000000600082015250565b6000612b35601483612aee565b9150612b4082612aff565b602082019050919050565b60006020820190508181036000830152612b6481612b28565b9050919050565b7f496e76616c696420696e7075742064617461206c656e6774682e000000000000600082015250565b6000612ba1601a83612aee565b9150612bac82612b6b565b602082019050919050565b60006020820190508181036000830152612bd081612b94565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c11826125db565b9150612c1c836125db565b925082612c2c57612c2b612bd7565b5b828206905092915050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612ca47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612c67565b612cae8683612c67565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612ceb612ce6612ce1846125db565b612cc6565b6125db565b9050919050565b6000819050919050565b612d0583612cd0565b612d19612d1182612cf2565b848454612c74565b825550505050565b600090565b612d2e612d21565b612d39818484612cfc565b505050565b5b81811015612d5d57612d52600082612d26565b600181019050612d3f565b5050565b601f821115612da257612d7381612c42565b612d7c84612c57565b81016020851015612d8b578190505b612d9f612d9785612c57565b830182612d3e565b50505b505050565b600082821c905092915050565b6000612dc560001984600802612da7565b1980831691505092915050565b6000612dde8383612db4565b9150826002028217905092915050565b612df88383612c37565b67ffffffffffffffff811115612e1157612e10612683565b5b612e1b8254612a5a565b612e26828285612d61565b6000601f831160018114612e555760008415612e43578287013590505b612e4d8582612dd2565b865550612eb5565b601f198416612e6386612c42565b60005b82811015612e8b57848901358255600182019150602085019450602081019050612e66565b86831015612ea85784890135612ea4601f891682612db4565b8355505b6001600288020188555050505b5050505050505056fea26469706673582212203124213488c2f1fca5968787f0c3e96fba8469129a80798e11ee752903b4bfdc64736f6c63430008130033 \ No newline at end of file diff --git a/contracts/LoadTester.sol b/contracts/LoadTester.sol index 9fb7050f..61b96e74 100644 --- a/contracts/LoadTester.sol +++ b/contracts/LoadTester.sol @@ -875,4 +875,58 @@ contract LoadTester { } } } + + function testECMul(bytes memory inputData) public returns (bytes memory result) { + require(inputData.length == 96, "Invalid input length"); + address EC_MUL_PRECOMPILED_CONTRACT = 0x0000000000000000000000000000000000000007; + + assembly { + let inputPtr := add(inputData, 0x20) // Ignore the length prefix of the inputData bytes array + let inputLength := mload(inputData) + + let success := call(gas(), EC_MUL_PRECOMPILED_CONTRACT, 0, inputPtr, inputLength, result, 0x40) + if iszero(success) { + revert(0, 0) + } + } + } + + function testECPairing(bytes memory inputData) public returns (bytes memory result) { + address EC_PAIRING_PRECOMPILED_CONTRACT = 0x0000000000000000000000000000000000000008; + + assembly { + let success := call( + gas(), + EC_PAIRING_PRECOMPILED_CONTRACT, + 0, // no ether transfer + add(inputData, 32), // inputData offset + mload(inputData), // inputData length + result, // output area + 64 // output area size (2 * 32 bytes) + ) + + if iszero(success) { + revert(0, 0) + } + } + } + + function testBlake2f(bytes memory inputData) public returns (bytes memory result) { + address BLAKE_2F_PRECOMPILED_CONTRACT = 0x0000000000000000000000000000000000000008; + + assembly { + let success := call( + gas(), + BLAKE_2F_PRECOMPILED_CONTRACT, + 0, // no ether transfer + add(inputData, 32), // inputData offset + mload(inputData), // inputData length + result, // output area + 64 // output area size (2 * 32 bytes) + ) + if iszero(success) { + revert(0, 0) + } + } + } } diff --git a/contracts/loadtester.go b/contracts/loadtester.go index d88b9f7f..12967932 100644 --- a/contracts/loadtester.go +++ b/contracts/loadtester.go @@ -31,8 +31,8 @@ var ( // LoadTesterMetaData contains all meta data concerning the LoadTester contract. var LoadTesterMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"dumpster\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCallCounter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inc\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"loopBlockHashUntilLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"loopUntilLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"trash\",\"type\":\"bytes\"}],\"name\":\"store\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testADD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testADDMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testADDRESS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testAND\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBALANCE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBASEFEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBLOCKHASH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBYTE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLDATACOPY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLDATALOAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLDATASIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLER\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLVALUE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCHAINID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCODECOPY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCODESIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCOINBASE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testDIFFICULTY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testDIV\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testECAdd\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testECRecover\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"result\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testEQ\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testEXP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testEXTCODESIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGASLIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGASPRICE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testISZERO\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testIdentity\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG0\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG3\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG4\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMLOAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMSIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMSTORE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMSTORE8\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMUL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMULMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testModExp\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testNOT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testNUMBER\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testORIGIN\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testRETURNDATACOPY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testRETURNDATASIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testRipemd160\",\"outputs\":[{\"internalType\":\"bytes20\",\"name\":\"result\",\"type\":\"bytes20\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSAR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSDIV\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSELFBALANCE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSGT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testSHA256\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"result\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSHA3\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSHL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSHR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSIGNEXTEND\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSLOAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSLT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSSTORE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSUB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testTIMESTAMP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testXOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b50612d87806100206000396000f3fe608060405234801561001057600080fd5b50600436106104335760003560e01c80637de8c6f811610236578063bf529ca11161013b578063dd9bef60116100c3578063f279ca8111610087578063f279ca81146110b0578063f4d1fc61146110e0578063f58fc36a14611110578063f6b0bbf714611140578063fde7721c1461117057610433565b8063dd9bef6014610fc0578063de97a36314610ff0578063e9f9b3f214611020578063ea5141e614611050578063edf003cf1461108057610433565b8063ce3cf4ef1161010a578063ce3cf4ef14610ed0578063d117320b14610f00578063d51e7b5b14610f30578063d53ff3fd14610f60578063d93cd55814610f9057610433565b8063bf529ca114610e10578063c360aba614610e40578063c420eb6114610e70578063c4bd65d514610ea057610433565b8063a271b721116101be578063b374012b1161018d578063b374012b14610d20578063b3d847f214610d50578063b7b8620714610d80578063b81c148414610db0578063bdc875fc14610de057610433565b8063a271b72114610c72578063a60a108714610c90578063a645c9c214610cc0578063acaebdf614610cf057610433565b806391e7b2771161020557806391e7b27714610b8257806398456f3e14610bb25780639a2b7c8114610be25780639cce7cf914610c12578063a18683cb14610c4257610433565b80637de8c6f814610ac257806380947f8014610af2578063880eff3914610b22578063918a5fcd14610b5257610433565b80633430ec061161033c57806360e13cde116102c45780636e7f1fe7116102935780636e7f1fe7146109d25780636f099c8d14610a0257806371d91d2814610a325780637b6e0b0e14610a625780637c191d2014610a9257610433565b806360e13cde14610924578063613d0a821461095457806363138d4f14610984578063659bbb4f146109b457610433565b806340fe26621161030b57806340fe26621461083457806344cf3bc7146108645780634a61af1f146108945780634d2c74b3146108c45780635590c2d9146108f457610433565b80633430ec0614610786578063371303c0146107b65780633a411f12146107d45780633a425dfc1461080457610433565b806319b621d6116103bf578063219cddeb1161038e578063219cddeb146106965780632294fc7f146106c65780632871ef85146106f65780632b21ef44146107265780632d34e7981461075657610433565b806319b621d6146105d65780631aba07ea146106065780631de2f343146106365780632007332e1461066657610433565b80631287a68c116104065780631287a68c146104f8578063135d52f7146105165780631581cf1914610546578063165821501461057657806318093b46146105a657610433565b8063034aef7114610438578063050082f814610468578063087b4e84146104985780630ba8a73b146104c8575b600080fd5b610452600480360381019061044d91906124a4565b6111a0565b60405161045f91906124e0565b60405180910390f35b610482600480360381019061047d91906124a4565b6111db565b60405161048f91906124e0565b60405180910390f35b6104b260048036038101906104ad91906124a4565b611216565b6040516104bf91906124e0565b60405180910390f35b6104e260048036038101906104dd91906124a4565b611250565b6040516104ef91906124e0565b60405180910390f35b61050061128c565b60405161050d91906124e0565b60405180910390f35b610530600480360381019061052b91906124a4565b611295565b60405161053d91906124e0565b60405180910390f35b610560600480360381019061055b91906124a4565b6112d1565b60405161056d91906124e0565b60405180910390f35b610590600480360381019061058b91906124a4565b61130c565b60405161059d91906124e0565b60405180910390f35b6105c060048036038101906105bb91906124a4565b611367565b6040516105cd91906124e0565b60405180910390f35b6105f060048036038101906105eb91906124a4565b6113a5565b6040516105fd91906124e0565b60405180910390f35b610620600480360381019061061b91906124a4565b611434565b60405161062d91906124e0565b60405180910390f35b610650600480360381019061064b91906124a4565b61147a565b60405161065d91906124e0565b60405180910390f35b610680600480360381019061067b91906124a4565b6114b8565b60405161068d91906124e0565b60405180910390f35b6106b060048036038101906106ab91906124a4565b6114f4565b6040516106bd91906124e0565b60405180910390f35b6106e060048036038101906106db91906124a4565b61152f565b6040516106ed91906124e0565b60405180910390f35b610710600480360381019061070b91906124a4565b61156e565b60405161071d91906124e0565b60405180910390f35b610740600480360381019061073b91906124a4565b6115a9565b60405161074d91906124e0565b60405180910390f35b610770600480360381019061076b91906124a4565b6115e4565b60405161077d91906124e0565b60405180910390f35b6107a0600480360381019061079b91906124a4565b61161f565b6040516107ad919061258b565b60405180910390f35b6107be6116cb565b6040516107cb91906124e0565b60405180910390f35b6107ee60048036038101906107e991906124a4565b6116ea565b6040516107fb91906124e0565b60405180910390f35b61081e600480360381019061081991906124a4565b611726565b60405161082b91906124e0565b60405180910390f35b61084e600480360381019061084991906124a4565b611762565b60405161085b91906124e0565b60405180910390f35b61087e600480360381019061087991906124a4565b6117a1565b60405161088b91906124e0565b60405180910390f35b6108ae60048036038101906108a991906124a4565b6117dc565b6040516108bb91906124e0565b60405180910390f35b6108de60048036038101906108d991906124a4565b61181a565b6040516108eb91906124e0565b60405180910390f35b61090e600480360381019061090991906124a4565b611855565b60405161091b91906124e0565b60405180910390f35b61093e600480360381019061093991906124a4565b61189a565b60405161094b91906124e0565b60405180910390f35b61096e600480360381019061096991906126e2565b6118d6565b60405161097b919061258b565b60405180910390f35b61099e600480360381019061099991906126e2565b611908565b6040516109ab9190612744565b60405180910390f35b6109bc611934565b6040516109c991906124e0565b60405180910390f35b6109ec60048036038101906109e791906124a4565b611970565b6040516109f991906124e0565b60405180910390f35b610a1c6004803603810190610a1791906124a4565b6119ae565b604051610a2991906124e0565b60405180910390f35b610a4c6004803603810190610a4791906124a4565b6119e9565b604051610a5991906124e0565b60405180910390f35b610a7c6004803603810190610a7791906124a4565b611a27565b604051610a8991906124e0565b60405180910390f35b610aac6004803603810190610aa791906124a4565b611a63565b604051610ab991906124e0565b60405180910390f35b610adc6004803603810190610ad791906124a4565b611a9e565b604051610ae991906124e0565b60405180910390f35b610b0c6004803603810190610b0791906124a4565b611ada565b604051610b1991906124e0565b60405180910390f35b610b3c6004803603810190610b3791906124a4565b611b37565b604051610b4991906124e0565b60405180910390f35b610b6c6004803603810190610b6791906124a4565b611b76565b604051610b7991906124e0565b60405180910390f35b610b9c6004803603810190610b9791906124a4565b611bb1565b604051610ba991906124e0565b60405180910390f35b610bcc6004803603810190610bc791906124a4565b611bfd565b604051610bd991906124e0565b60405180910390f35b610bfc6004803603810190610bf791906124a4565b611c3d565b604051610c0991906124e0565b60405180910390f35b610c2c6004803603810190610c2791906126e2565b611c78565b604051610c39919061258b565b60405180910390f35b610c5c6004803603810190610c5791906126e2565b611ca9565b604051610c6991906127a0565b60405180910390f35b610c7a611d2b565b604051610c8791906124e0565b60405180910390f35b610caa6004803603810190610ca591906124a4565b611d76565b604051610cb791906124e0565b60405180910390f35b610cda6004803603810190610cd591906124a4565b611db1565b604051610ce791906124e0565b60405180910390f35b610d0a6004803603810190610d0591906124a4565b611ded565b604051610d1791906124e0565b60405180910390f35b610d3a6004803603810190610d35919061281b565b611e29565b604051610d4791906124e0565b60405180910390f35b610d6a6004803603810190610d6591906124a4565b611e77565b604051610d7791906124e0565b60405180910390f35b610d9a6004803603810190610d9591906124a4565b611eb2565b604051610da791906124e0565b60405180910390f35b610dca6004803603810190610dc591906124a4565b611eed565b604051610dd791906124e0565b60405180910390f35b610dfa6004803603810190610df591906124a4565b611f28565b604051610e0791906124e0565b60405180910390f35b610e2a6004803603810190610e2591906124a4565b611f63565b604051610e3791906124e0565b60405180910390f35b610e5a6004803603810190610e5591906124a4565b611fa7565b604051610e6791906124e0565b60405180910390f35b610e8a6004803603810190610e8591906124a4565b611fe3565b604051610e9791906124e0565b60405180910390f35b610eba6004803603810190610eb591906124a4565b61201e565b604051610ec791906124e0565b60405180910390f35b610eea6004803603810190610ee591906124a4565b61205c565b604051610ef791906124e0565b60405180910390f35b610f1a6004803603810190610f1591906124a4565b612099565b604051610f2791906124e0565b60405180910390f35b610f4a6004803603810190610f4591906124a4565b6120d3565b604051610f5791906124e0565b60405180910390f35b610f7a6004803603810190610f7591906124a4565b61210f565b604051610f8791906124e0565b60405180910390f35b610faa6004803603810190610fa591906124a4565b61214b565b604051610fb791906124e0565b60405180910390f35b610fda6004803603810190610fd591906124a4565b6121a6565b604051610fe791906124e0565b60405180910390f35b61100a600480360381019061100591906124a4565b6121e8565b60405161101791906124e0565b60405180910390f35b61103a600480360381019061103591906124a4565b612224565b60405161104791906124e0565b60405180910390f35b61106a600480360381019061106591906124a4565b612261565b60405161107791906124e0565b60405180910390f35b61109a600480360381019061109591906126e2565b6122a3565b6040516110a7919061258b565b60405180910390f35b6110ca60048036038101906110c591906124a4565b612312565b6040516110d791906124e0565b60405180910390f35b6110fa60048036038101906110f591906124a4565b61234e565b60405161110791906124e0565b60405180910390f35b61112a600480360381019061112591906124a4565b61238c565b60405161113791906124e0565b60405180910390f35b61115a600480360381019061115591906126e2565b6123cb565b60405161116791906128a3565b60405180910390f35b61118a600480360381019061118591906124a4565b6123fd565b60405161119791906124e0565b60405180910390f35b60006111aa6116cb565b50600065deadbeef003690506000805b848110156111d0573691506001810190506111ba565b505080915050919050565b60006111e56116cb565b50600065deadbeef003290506000805b8481101561120b573291506001810190506111f5565b505080915050919050565b60006112206116cb565b50600065deadbeef0052905060005b83811015611246578160005260018101905061122f565b5080915050919050565b600061125a6116cb565b50600065deadbeef0001905060005b8381101561128257600082019150600181019050611269565b5080915050919050565b60008054905090565b600061129f6116cb565b50600065deadbeef0017905060005b838110156112c7576000821791506001810190506112ae565b5080915050919050565b60006112db6116cb565b50600065deadbeef003490506000805b84811015611301573491506001810190506112eb565b505080915050919050565b60006113166116cb565b50600065deadbeef0006905060005b8381101561135d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82069150600181019050611325565b5080915050919050565b60006113716116cb565b50600065deadbeef001390506000805b8481101561139a57600183139150600181019050611381565b505080915050919050565b60006113af6116cb565b50600065deadbeef002090507fffffffff000000000000000000000000000000000000000000000000000000006000526000805b848110156113fd57600460002091506001810190506113e3565b507f29045a592007d0c246ef02c2223570da9522d0cf0f73282c79a1bc8f0bb2c238811461142a57600091505b5080915050919050565b600061143e6116cb565b50600065deadbeef00a490508060105260005b83811015611470576004600360028360066010a4600181019050611451565b5080915050919050565b60006114846116cb565b50600065deadbeef001a90506000805b848110156114ad578260001a9150600181019050611494565b505080915050919050565b60006114c26116cb565b50600065deadbeef001b905060005b838110156114ea578160001b91506001810190506114d1565b5080915050919050565b60006114fe6116cb565b50600065deadbeef004290506000805b848110156115245742915060018101905061150e565b505080915050919050565b60006115396116cb565b50600065deadbeef0031905060003060005b85811015611562578131925060018101905061154b565b50505080915050919050565b60006115786116cb565b50600065deadbeef004890506000805b8481101561159e57489150600181019050611588565b505080915050919050565b60006115b36116cb565b50600065deadbeef003d90506000805b848110156115d9573d91506001810190506115c3565b505080915050919050565b60006115ee6116cb565b50600065deadbeef004390506000805b84811015611614574391506001810190506115fe565b505080915050919050565b6002818154811061162f57600080fd5b90600052602060002001600091509050805461164a906128ed565b80601f0160208091040260200160405190810160405280929190818152602001828054611676906128ed565b80156116c35780601f10611698576101008083540402835291602001916116c3565b820191906000526020600020905b8154815290600101906020018083116116a657829003601f168201915b505050505081565b600060016000546116dc919061294d565b600081905550600054905090565b60006116f46116cb565b50600065deadbeef0004905060005b8381101561171c57600182049150600181019050611703565b5080915050919050565b60006117306116cb565b50600065deadbeef0037905060005b838110156117585760206000803760018101905061173f565b5080915050919050565b600061176c6116cb565b50600065deadbeef00a090508060105260005b838110156117975760066010a060018101905061177f565b5080915050919050565b60006117ab6116cb565b50600065deadbeef003390506000805b848110156117d1573391506001810190506117bb565b505080915050919050565b60006117e66116cb565b50600065deadbeef0053905060005b838110156118105763deadbeef6000526001810190506117f5565b5080915050919050565b60006118246116cb565b50600065deadbeef003a90506000805b8481101561184a573a9150600181019050611834565b505080915050919050565b600061185f6116cb565b50600065deadbeef0051905060008160005260005b8481101561188c576000519150600181019050611874565b508091505080915050919050565b60006118a46116cb565b50600065deadbeef001d905060005b838110156118cc578160001d91506001810190506118b3565b5080915050919050565b606060006005905060208301835160405160208183856000885af1806118fb57600080fd5b8195505050505050919050565b600080600290506020830183518360208183856000885af18061192a57600080fd5b5050505050919050565b600061193e6116cb565b505b6103e85a111561196857600180600082825461195c919061294d565b92505081905550611940565b600154905090565b600061197a6116cb565b50600065deadbeef001090506000805b848110156119a35782600110915060018101905061198a565b505080915050919050565b60006119b86116cb565b50600065deadbeef004490506000805b848110156119de574491506001810190506119c8565b505080915050919050565b60006119f36116cb565b50600065deadbeef001190506000805b84811015611a1c57600183119150600181019050611a03565b505080915050919050565b6000611a316116cb565b50600065deadbeef003e905060005b83811015611a595760206000803e600181019050611a40565b5080915050919050565b6000611a6d6116cb565b50600065deadbeef004590506000805b84811015611a9357459150600181019050611a7d565b505080915050919050565b6000611aa86116cb565b50600065deadbeef0002905060005b83811015611ad057600182029150600181019050611ab7565b5080915050919050565b6000611ae46116cb565b50600065deadbeef0008905060005b83811015611b2d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600083089150600181019050611af3565b5080915050919050565b6000611b416116cb565b50600065deadbeef005490508060005560005b83811015611b6c576000549150600181019050611b54565b5080915050919050565b6000611b806116cb565b50600065deadbeef005a90506000805b84811015611ba6575a9150600181019050611b90565b505080915050919050565b6000611bbb6116cb565b50600065deadbeef0019905060005b83811015611be15781199150600181019050611bca565b5065deadbeef00198114611bf457801990505b80915050919050565b6000611c076116cb565b50600065deadbeef00a190508060105260005b83811015611c33578060066010a1600181019050611c1a565b5080915050919050565b6000611c476116cb565b50600065deadbeef0016905060005b83811015611c6e578182169150600181019050611c56565b5080915050919050565b6060600060049050602083018351604051818183856000885af180611c9c57600080fd5b8195505050505050919050565b60006080825114611cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce6906129de565b60405180910390fd5b600060019050602083016020810151601f1a602082015260206040516080836000865af180611d1d57600080fd5b604051519350505050919050565b6000611d356116cb565b505b6103e85a1115611d6e576001806000828254611d53919061294d565b9250508190555043600154611d689190612a2d565b50611d37565b600154905090565b6000611d806116cb565b50600065deadbeef004690506000805b84811015611da657469150600181019050611d90565b505080915050919050565b6000611dbb6116cb565b50600065deadbeef0005905060005b83811015611de357600182059150600181019050611dca565b5080915050919050565b6000611df76116cb565b50600065deadbeef0039905060005b83811015611e1f57602060008039600181019050611e06565b5080915050919050565b60006002838390918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611e68929190612c15565b50600280549050905092915050565b6000611e816116cb565b50600065deadbeef005990506000805b84811015611ea757599150600181019050611e91565b505080915050919050565b6000611ebc6116cb565b50600065deadbeef003890506000805b84811015611ee257389150600181019050611ecc565b505080915050919050565b6000611ef76116cb565b50600065deadbeef004190506000805b84811015611f1d57419150600181019050611f07565b505080915050919050565b6000611f326116cb565b50600065deadbeef003090506000805b84811015611f5857309150600181019050611f42565b505080915050919050565b6000611f6d6116cb565b50600065deadbeef00a390508060105260005b83811015611f9d57600360028260066010a3600181019050611f80565b5080915050919050565b6000611fb16116cb565b50600065deadbeef000b905060005b83811015611fd9578160200b9150600181019050611fc0565b5080915050919050565b6000611fed6116cb565b50600065deadbeef004790506000805b8481101561201357479150600181019050611ffd565b505080915050919050565b60006120286116cb565b50600065deadbeef001c90506000805b84811015612051578260001c9250600181019050612038565b505080915050919050565b60006120666116cb565b50600065deadbeef003590506000805b8481101561208e576000359150600181019050612076565b505080915050919050565b60006120a36116cb565b50600065deadbeef0055905060005b838110156120c957816000556001810190506120b2565b5080915050919050565b60006120dd6116cb565b50600065deadbeef0018905060005b83811015612105576000821891506001810190506120ec565b5080915050919050565b60006121196116cb565b50600065deadbeef0003905060005b8381101561214157600082039150600181019050612128565b5080915050919050565b60006121556116cb565b50600065deadbeef0007905060005b8381101561219c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82079150600181019050612164565b5080915050919050565b60006121b06116cb565b50600065deadbeef00a290508060105260005b838110156121de5760028160066010a26001810190506121c3565b5080915050919050565b60006121f26116cb565b50600065deadbeef000a905060005b8381101561221a576001820a9150600181019050612201565b5080915050919050565b600061222e6116cb565b50600065deadbeef001490506000805b8481101561225657828314915060018101905061223e565b505080915050919050565b600061226b6116cb565b50600065deadbeef0040905060006001430360005b858110156122975781409250600181019050612280565b50505080915050919050565b606060808251146122e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e090612d31565b60405180910390fd5b60006006905060208301835160408482846000875af18061230957600080fd5b50505050919050565b600061231c6116cb565b50600065deadbeef001590506000805b84811015612343578215915060018101905061232c565b505080915050919050565b60006123586116cb565b50600065deadbeef001290506000805b8481101561238157826001129150600181019050612368565b505080915050919050565b60006123966116cb565b50600065deadbeef003b905060003060005b858110156123bf57813b92506001810190506123a8565b50505080915050919050565b6000806003905060208301835160405160148183856000885af1806123ef57600080fd5b815195505050505050919050565b60006124076116cb565b50600065deadbeef0009905060005b83811015612450577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600183099150600181019050612416565b5080915050919050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6124818161246e565b811461248c57600080fd5b50565b60008135905061249e81612478565b92915050565b6000602082840312156124ba576124b9612464565b5b60006124c88482850161248f565b91505092915050565b6124da8161246e565b82525050565b60006020820190506124f560008301846124d1565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561253557808201518184015260208101905061251a565b60008484015250505050565b6000601f19601f8301169050919050565b600061255d826124fb565b6125678185612506565b9350612577818560208601612517565b61258081612541565b840191505092915050565b600060208201905081810360008301526125a58184612552565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6125ef82612541565b810181811067ffffffffffffffff8211171561260e5761260d6125b7565b5b80604052505050565b600061262161245a565b905061262d82826125e6565b919050565b600067ffffffffffffffff82111561264d5761264c6125b7565b5b61265682612541565b9050602081019050919050565b82818337600083830152505050565b600061268561268084612632565b612617565b9050828152602081018484840111156126a1576126a06125b2565b5b6126ac848285612663565b509392505050565b600082601f8301126126c9576126c86125ad565b5b81356126d9848260208601612672565b91505092915050565b6000602082840312156126f8576126f7612464565b5b600082013567ffffffffffffffff81111561271657612715612469565b5b612722848285016126b4565b91505092915050565b6000819050919050565b61273e8161272b565b82525050565b60006020820190506127596000830184612735565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061278a8261275f565b9050919050565b61279a8161277f565b82525050565b60006020820190506127b56000830184612791565b92915050565b600080fd5b600080fd5b60008083601f8401126127db576127da6125ad565b5b8235905067ffffffffffffffff8111156127f8576127f76127bb565b5b602083019150836001820283011115612814576128136127c0565b5b9250929050565b6000806020838503121561283257612831612464565b5b600083013567ffffffffffffffff8111156128505761284f612469565b5b61285c858286016127c5565b92509250509250929050565b60007fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b61289d81612868565b82525050565b60006020820190506128b86000830184612894565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061290557607f821691505b602082108103612918576129176128be565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129588261246e565b91506129638361246e565b925082820190508082111561297b5761297a61291e565b5b92915050565b600082825260208201905092915050565b7f496e76616c696420696e7075742064617461206c656e6774682e000000000000600082015250565b60006129c8601a83612981565b91506129d382612992565b602082019050919050565b600060208201905081810360008301526129f7816129bb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a388261246e565b9150612a438361246e565b925082612a5357612a526129fe565b5b828206905092915050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612acb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612a8e565b612ad58683612a8e565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612b12612b0d612b088461246e565b612aed565b61246e565b9050919050565b6000819050919050565b612b2c83612af7565b612b40612b3882612b19565b848454612a9b565b825550505050565b600090565b612b55612b48565b612b60818484612b23565b505050565b5b81811015612b8457612b79600082612b4d565b600181019050612b66565b5050565b601f821115612bc957612b9a81612a69565b612ba384612a7e565b81016020851015612bb2578190505b612bc6612bbe85612a7e565b830182612b65565b50505b505050565b600082821c905092915050565b6000612bec60001984600802612bce565b1980831691505092915050565b6000612c058383612bdb565b9150826002028217905092915050565b612c1f8383612a5e565b67ffffffffffffffff811115612c3857612c376125b7565b5b612c4282546128ed565b612c4d828285612b88565b6000601f831160018114612c7c5760008415612c6a578287013590505b612c748582612bf9565b865550612cdc565b601f198416612c8a86612a69565b60005b82811015612cb257848901358255600182019150602085019450602081019050612c8d565b86831015612ccf5784890135612ccb601f891682612bdb565b8355505b6001600288020188555050505b50505050505050565b7f496e76616c696420696e707574206c656e677468000000000000000000000000600082015250565b6000612d1b601483612981565b9150612d2682612ce5565b602082019050919050565b60006020820190508181036000830152612d4a81612d0e565b905091905056fea26469706673582212201b540fbef3fb329c62d3c5ab4a168060872273585e8bfe8b9988c68073c175d464736f6c63430008130033", + ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"dumpster\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCallCounter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inc\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"loopBlockHashUntilLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"loopUntilLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"trash\",\"type\":\"bytes\"}],\"name\":\"store\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testADD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testADDMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testADDRESS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testAND\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBALANCE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBASEFEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBLOCKHASH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBYTE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testBlake2f\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLDATACOPY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLDATALOAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLDATASIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLER\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLVALUE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCHAINID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCODECOPY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCODESIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCOINBASE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testDIFFICULTY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testDIV\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testECAdd\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testECMul\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testECPairing\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testECRecover\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"result\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testEQ\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testEXP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testEXTCODESIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGASLIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGASPRICE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testISZERO\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testIdentity\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG0\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG3\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG4\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMLOAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMSIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMSTORE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMSTORE8\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMUL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMULMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testModExp\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testNOT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testNUMBER\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testORIGIN\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testRETURNDATACOPY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testRETURNDATASIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testRipemd160\",\"outputs\":[{\"internalType\":\"bytes20\",\"name\":\"result\",\"type\":\"bytes20\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSAR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSDIV\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSELFBALANCE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSGT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testSHA256\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"result\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSHA3\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSHL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSHR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSIGNEXTEND\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSLOAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSLT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSSTORE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSUB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testTIMESTAMP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testXOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x608060405234801561001057600080fd5b50612ef4806100206000396000f3fe608060405234801561001057600080fd5b50600436106104545760003560e01c806380947f8011610241578063bf529ca11161013b578063dd9bef60116100c3578063f279ca8111610087578063f279ca8114611161578063f4d1fc6114611191578063f58fc36a146111c1578063f6b0bbf7146111f1578063fde7721c1461122157610454565b8063dd9bef6014611071578063de97a363146110a1578063e9f9b3f2146110d1578063ea5141e614611101578063edf003cf1461113157610454565b8063ce3cf4ef1161010a578063ce3cf4ef14610f81578063d117320b14610fb1578063d51e7b5b14610fe1578063d53ff3fd14611011578063d93cd5581461104157610454565b8063bf529ca114610ec1578063c360aba614610ef1578063c420eb6114610f21578063c4bd65d514610f5157610454565b8063a18683cb116101c9578063b374012b1161018d578063b374012b14610dd1578063b3d847f214610e01578063b7b8620714610e31578063b81c148414610e61578063bdc875fc14610e9157610454565b8063a18683cb14610cf3578063a271b72114610d23578063a60a108714610d41578063a645c9c214610d71578063acaebdf614610da157610454565b8063962e4dc211610210578063962e4dc214610c0357806398456f3e14610c335780639a2b7c8114610c635780639cce7cf914610c93578063a040aec614610cc357610454565b806380947f8014610b43578063880eff3914610b73578063918a5fcd14610ba357806391e7b27714610bd357610454565b80633430ec061161035257806360e13cde116102da5780636f099c8d1161029e5780636f099c8d14610a5357806371d91d2814610a835780637b6e0b0e14610ab35780637c191d2014610ae35780637de8c6f814610b1357610454565b806360e13cde14610975578063613d0a82146109a557806363138d4f146109d5578063659bbb4f14610a055780636e7f1fe714610a2357610454565b806340fe26621161032157806340fe26621461088557806344cf3bc7146108b55780634a61af1f146108e55780634d2c74b3146109155780635590c2d91461094557610454565b80633430ec06146107d7578063371303c0146108075780633a411f12146108255780633a425dfc1461085557610454565b806318093b46116103e0578063219cddeb116103a4578063219cddeb146106e75780632294fc7f146107175780632871ef85146107475780632b21ef44146107775780632d34e798146107a757610454565b806318093b46146105f757806319b621d6146106275780631aba07ea146106575780631de2f343146106875780632007332e146106b757610454565b80630ba8a73b116104275780630ba8a73b146105195780631287a68c14610549578063135d52f7146105675780631581cf191461059757806316582150146105c757610454565b8063034aef7114610459578063050082f814610489578063087b4e84146104b95780630b3b996a146104e9575b600080fd5b610473600480360381019061046e9190612611565b611251565b604051610480919061264d565b60405180910390f35b6104a3600480360381019061049e9190612611565b61128c565b6040516104b0919061264d565b60405180910390f35b6104d360048036038101906104ce9190612611565b6112c7565b6040516104e0919061264d565b60405180910390f35b61050360048036038101906104fe91906127ae565b611301565b6040516105109190612876565b60405180910390f35b610533600480360381019061052e9190612611565b611328565b604051610540919061264d565b60405180910390f35b610551611364565b60405161055e919061264d565b60405180910390f35b610581600480360381019061057c9190612611565b61136d565b60405161058e919061264d565b60405180910390f35b6105b160048036038101906105ac9190612611565b6113a9565b6040516105be919061264d565b60405180910390f35b6105e160048036038101906105dc9190612611565b6113e4565b6040516105ee919061264d565b60405180910390f35b610611600480360381019061060c9190612611565b61143f565b60405161061e919061264d565b60405180910390f35b610641600480360381019061063c9190612611565b61147d565b60405161064e919061264d565b60405180910390f35b610671600480360381019061066c9190612611565b61150c565b60405161067e919061264d565b60405180910390f35b6106a1600480360381019061069c9190612611565b611552565b6040516106ae919061264d565b60405180910390f35b6106d160048036038101906106cc9190612611565b611590565b6040516106de919061264d565b60405180910390f35b61070160048036038101906106fc9190612611565b6115cc565b60405161070e919061264d565b60405180910390f35b610731600480360381019061072c9190612611565b611607565b60405161073e919061264d565b60405180910390f35b610761600480360381019061075c9190612611565b611646565b60405161076e919061264d565b60405180910390f35b610791600480360381019061078c9190612611565b611681565b60405161079e919061264d565b60405180910390f35b6107c160048036038101906107bc9190612611565b6116bc565b6040516107ce919061264d565b60405180910390f35b6107f160048036038101906107ec9190612611565b6116f7565b6040516107fe9190612876565b60405180910390f35b61080f6117a3565b60405161081c919061264d565b60405180910390f35b61083f600480360381019061083a9190612611565b6117c2565b60405161084c919061264d565b60405180910390f35b61086f600480360381019061086a9190612611565b6117fe565b60405161087c919061264d565b60405180910390f35b61089f600480360381019061089a9190612611565b61183a565b6040516108ac919061264d565b60405180910390f35b6108cf60048036038101906108ca9190612611565b611879565b6040516108dc919061264d565b60405180910390f35b6108ff60048036038101906108fa9190612611565b6118b4565b60405161090c919061264d565b60405180910390f35b61092f600480360381019061092a9190612611565b6118f2565b60405161093c919061264d565b60405180910390f35b61095f600480360381019061095a9190612611565b61192d565b60405161096c919061264d565b60405180910390f35b61098f600480360381019061098a9190612611565b611972565b60405161099c919061264d565b60405180910390f35b6109bf60048036038101906109ba91906127ae565b6119ae565b6040516109cc9190612876565b60405180910390f35b6109ef60048036038101906109ea91906127ae565b6119e0565b6040516109fc91906128b1565b60405180910390f35b610a0d611a0c565b604051610a1a919061264d565b60405180910390f35b610a3d6004803603810190610a389190612611565b611a48565b604051610a4a919061264d565b60405180910390f35b610a6d6004803603810190610a689190612611565b611a86565b604051610a7a919061264d565b60405180910390f35b610a9d6004803603810190610a989190612611565b611ac1565b604051610aaa919061264d565b60405180910390f35b610acd6004803603810190610ac89190612611565b611aff565b604051610ada919061264d565b60405180910390f35b610afd6004803603810190610af89190612611565b611b3b565b604051610b0a919061264d565b60405180910390f35b610b2d6004803603810190610b289190612611565b611b76565b604051610b3a919061264d565b60405180910390f35b610b5d6004803603810190610b589190612611565b611bb2565b604051610b6a919061264d565b60405180910390f35b610b8d6004803603810190610b889190612611565b611c0f565b604051610b9a919061264d565b60405180910390f35b610bbd6004803603810190610bb89190612611565b611c4e565b604051610bca919061264d565b60405180910390f35b610bed6004803603810190610be89190612611565b611c89565b604051610bfa919061264d565b60405180910390f35b610c1d6004803603810190610c1891906127ae565b611cd5565b604051610c2a9190612876565b60405180910390f35b610c4d6004803603810190610c489190612611565b611d43565b604051610c5a919061264d565b60405180910390f35b610c7d6004803603810190610c789190612611565b611d83565b604051610c8a919061264d565b60405180910390f35b610cad6004803603810190610ca891906127ae565b611dbe565b604051610cba9190612876565b60405180910390f35b610cdd6004803603810190610cd891906127ae565b611def565b604051610cea9190612876565b60405180910390f35b610d0d6004803603810190610d0891906127ae565b611e16565b604051610d1a919061290d565b60405180910390f35b610d2b611e98565b604051610d38919061264d565b60405180910390f35b610d5b6004803603810190610d569190612611565b611ee3565b604051610d68919061264d565b60405180910390f35b610d8b6004803603810190610d869190612611565b611f1e565b604051610d98919061264d565b60405180910390f35b610dbb6004803603810190610db69190612611565b611f5a565b604051610dc8919061264d565b60405180910390f35b610deb6004803603810190610de69190612988565b611f96565b604051610df8919061264d565b60405180910390f35b610e1b6004803603810190610e169190612611565b611fe4565b604051610e28919061264d565b60405180910390f35b610e4b6004803603810190610e469190612611565b61201f565b604051610e58919061264d565b60405180910390f35b610e7b6004803603810190610e769190612611565b61205a565b604051610e88919061264d565b60405180910390f35b610eab6004803603810190610ea69190612611565b612095565b604051610eb8919061264d565b60405180910390f35b610edb6004803603810190610ed69190612611565b6120d0565b604051610ee8919061264d565b60405180910390f35b610f0b6004803603810190610f069190612611565b612114565b604051610f18919061264d565b60405180910390f35b610f3b6004803603810190610f369190612611565b612150565b604051610f48919061264d565b60405180910390f35b610f6b6004803603810190610f669190612611565b61218b565b604051610f78919061264d565b60405180910390f35b610f9b6004803603810190610f969190612611565b6121c9565b604051610fa8919061264d565b60405180910390f35b610fcb6004803603810190610fc69190612611565b612206565b604051610fd8919061264d565b60405180910390f35b610ffb6004803603810190610ff69190612611565b612240565b604051611008919061264d565b60405180910390f35b61102b60048036038101906110269190612611565b61227c565b604051611038919061264d565b60405180910390f35b61105b60048036038101906110569190612611565b6122b8565b604051611068919061264d565b60405180910390f35b61108b60048036038101906110869190612611565b612313565b604051611098919061264d565b60405180910390f35b6110bb60048036038101906110b69190612611565b612355565b6040516110c8919061264d565b60405180910390f35b6110eb60048036038101906110e69190612611565b612391565b6040516110f8919061264d565b60405180910390f35b61111b60048036038101906111169190612611565b6123ce565b604051611128919061264d565b60405180910390f35b61114b600480360381019061114691906127ae565b612410565b6040516111589190612876565b60405180910390f35b61117b60048036038101906111769190612611565b61247f565b604051611188919061264d565b60405180910390f35b6111ab60048036038101906111a69190612611565b6124bb565b6040516111b8919061264d565b60405180910390f35b6111db60048036038101906111d69190612611565b6124f9565b6040516111e8919061264d565b60405180910390f35b61120b600480360381019061120691906127ae565b612538565b6040516112189190612a10565b60405180910390f35b61123b60048036038101906112369190612611565b61256a565b604051611248919061264d565b60405180910390f35b600061125b6117a3565b50600065deadbeef003690506000805b848110156112815736915060018101905061126b565b505080915050919050565b60006112966117a3565b50600065deadbeef003290506000805b848110156112bc573291506001810190506112a6565b505080915050919050565b60006112d16117a3565b50600065deadbeef0052905060005b838110156112f757816000526001810190506112e0565b5080915050919050565b60606000600890506040828451602086016000855af18061132157600080fd5b5050919050565b60006113326117a3565b50600065deadbeef0001905060005b8381101561135a57600082019150600181019050611341565b5080915050919050565b60008054905090565b60006113776117a3565b50600065deadbeef0017905060005b8381101561139f57600082179150600181019050611386565b5080915050919050565b60006113b36117a3565b50600065deadbeef003490506000805b848110156113d9573491506001810190506113c3565b505080915050919050565b60006113ee6117a3565b50600065deadbeef0006905060005b83811015611435577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820691506001810190506113fd565b5080915050919050565b60006114496117a3565b50600065deadbeef001390506000805b8481101561147257600183139150600181019050611459565b505080915050919050565b60006114876117a3565b50600065deadbeef002090507fffffffff000000000000000000000000000000000000000000000000000000006000526000805b848110156114d557600460002091506001810190506114bb565b507f29045a592007d0c246ef02c2223570da9522d0cf0f73282c79a1bc8f0bb2c238811461150257600091505b5080915050919050565b60006115166117a3565b50600065deadbeef00a490508060105260005b83811015611548576004600360028360066010a4600181019050611529565b5080915050919050565b600061155c6117a3565b50600065deadbeef001a90506000805b84811015611585578260001a915060018101905061156c565b505080915050919050565b600061159a6117a3565b50600065deadbeef001b905060005b838110156115c2578160001b91506001810190506115a9565b5080915050919050565b60006115d66117a3565b50600065deadbeef004290506000805b848110156115fc574291506001810190506115e6565b505080915050919050565b60006116116117a3565b50600065deadbeef0031905060003060005b8581101561163a5781319250600181019050611623565b50505080915050919050565b60006116506117a3565b50600065deadbeef004890506000805b8481101561167657489150600181019050611660565b505080915050919050565b600061168b6117a3565b50600065deadbeef003d90506000805b848110156116b1573d915060018101905061169b565b505080915050919050565b60006116c66117a3565b50600065deadbeef004390506000805b848110156116ec574391506001810190506116d6565b505080915050919050565b6002818154811061170757600080fd5b90600052602060002001600091509050805461172290612a5a565b80601f016020809104026020016040519081016040528092919081815260200182805461174e90612a5a565b801561179b5780601f106117705761010080835404028352916020019161179b565b820191906000526020600020905b81548152906001019060200180831161177e57829003601f168201915b505050505081565b600060016000546117b49190612aba565b600081905550600054905090565b60006117cc6117a3565b50600065deadbeef0004905060005b838110156117f4576001820491506001810190506117db565b5080915050919050565b60006118086117a3565b50600065deadbeef0037905060005b8381101561183057602060008037600181019050611817565b5080915050919050565b60006118446117a3565b50600065deadbeef00a090508060105260005b8381101561186f5760066010a0600181019050611857565b5080915050919050565b60006118836117a3565b50600065deadbeef003390506000805b848110156118a957339150600181019050611893565b505080915050919050565b60006118be6117a3565b50600065deadbeef0053905060005b838110156118e85763deadbeef6000526001810190506118cd565b5080915050919050565b60006118fc6117a3565b50600065deadbeef003a90506000805b84811015611922573a915060018101905061190c565b505080915050919050565b60006119376117a3565b50600065deadbeef0051905060008160005260005b8481101561196457600051915060018101905061194c565b508091505080915050919050565b600061197c6117a3565b50600065deadbeef001d905060005b838110156119a4578160001d915060018101905061198b565b5080915050919050565b606060006005905060208301835160405160208183856000885af1806119d357600080fd5b8195505050505050919050565b600080600290506020830183518360208183856000885af180611a0257600080fd5b5050505050919050565b6000611a166117a3565b505b6103e85a1115611a40576001806000828254611a349190612aba565b92505081905550611a18565b600154905090565b6000611a526117a3565b50600065deadbeef001090506000805b84811015611a7b57826001109150600181019050611a62565b505080915050919050565b6000611a906117a3565b50600065deadbeef004490506000805b84811015611ab657449150600181019050611aa0565b505080915050919050565b6000611acb6117a3565b50600065deadbeef001190506000805b84811015611af457600183119150600181019050611adb565b505080915050919050565b6000611b096117a3565b50600065deadbeef003e905060005b83811015611b315760206000803e600181019050611b18565b5080915050919050565b6000611b456117a3565b50600065deadbeef004590506000805b84811015611b6b57459150600181019050611b55565b505080915050919050565b6000611b806117a3565b50600065deadbeef0002905060005b83811015611ba857600182029150600181019050611b8f565b5080915050919050565b6000611bbc6117a3565b50600065deadbeef0008905060005b83811015611c05577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600083089150600181019050611bcb565b5080915050919050565b6000611c196117a3565b50600065deadbeef005490508060005560005b83811015611c44576000549150600181019050611c2c565b5080915050919050565b6000611c586117a3565b50600065deadbeef005a90506000805b84811015611c7e575a9150600181019050611c68565b505080915050919050565b6000611c936117a3565b50600065deadbeef0019905060005b83811015611cb95781199150600181019050611ca2565b5065deadbeef00198114611ccc57801990505b80915050919050565b606080825114611d1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1190612b4b565b60405180910390fd5b60006007905060208301835160408482846000875af180611d3a57600080fd5b50505050919050565b6000611d4d6117a3565b50600065deadbeef00a190508060105260005b83811015611d79578060066010a1600181019050611d60565b5080915050919050565b6000611d8d6117a3565b50600065deadbeef0016905060005b83811015611db4578182169150600181019050611d9c565b5080915050919050565b6060600060049050602083018351604051818183856000885af180611de257600080fd5b8195505050505050919050565b60606000600890506040828451602086016000855af180611e0f57600080fd5b5050919050565b60006080825114611e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5390612bb7565b60405180910390fd5b600060019050602083016020810151601f1a602082015260206040516080836000865af180611e8a57600080fd5b604051519350505050919050565b6000611ea26117a3565b505b6103e85a1115611edb576001806000828254611ec09190612aba565b9250508190555043600154611ed59190612c06565b50611ea4565b600154905090565b6000611eed6117a3565b50600065deadbeef004690506000805b84811015611f1357469150600181019050611efd565b505080915050919050565b6000611f286117a3565b50600065deadbeef0005905060005b83811015611f5057600182059150600181019050611f37565b5080915050919050565b6000611f646117a3565b50600065deadbeef0039905060005b83811015611f8c57602060008039600181019050611f73565b5080915050919050565b60006002838390918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611fd5929190612dee565b50600280549050905092915050565b6000611fee6117a3565b50600065deadbeef005990506000805b8481101561201457599150600181019050611ffe565b505080915050919050565b60006120296117a3565b50600065deadbeef003890506000805b8481101561204f57389150600181019050612039565b505080915050919050565b60006120646117a3565b50600065deadbeef004190506000805b8481101561208a57419150600181019050612074565b505080915050919050565b600061209f6117a3565b50600065deadbeef003090506000805b848110156120c5573091506001810190506120af565b505080915050919050565b60006120da6117a3565b50600065deadbeef00a390508060105260005b8381101561210a57600360028260066010a36001810190506120ed565b5080915050919050565b600061211e6117a3565b50600065deadbeef000b905060005b83811015612146578160200b915060018101905061212d565b5080915050919050565b600061215a6117a3565b50600065deadbeef004790506000805b848110156121805747915060018101905061216a565b505080915050919050565b60006121956117a3565b50600065deadbeef001c90506000805b848110156121be578260001c92506001810190506121a5565b505080915050919050565b60006121d36117a3565b50600065deadbeef003590506000805b848110156121fb5760003591506001810190506121e3565b505080915050919050565b60006122106117a3565b50600065deadbeef0055905060005b83811015612236578160005560018101905061221f565b5080915050919050565b600061224a6117a3565b50600065deadbeef0018905060005b8381101561227257600082189150600181019050612259565b5080915050919050565b60006122866117a3565b50600065deadbeef0003905060005b838110156122ae57600082039150600181019050612295565b5080915050919050565b60006122c26117a3565b50600065deadbeef0007905060005b83811015612309577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820791506001810190506122d1565b5080915050919050565b600061231d6117a3565b50600065deadbeef00a290508060105260005b8381101561234b5760028160066010a2600181019050612330565b5080915050919050565b600061235f6117a3565b50600065deadbeef000a905060005b83811015612387576001820a915060018101905061236e565b5080915050919050565b600061239b6117a3565b50600065deadbeef001490506000805b848110156123c35782831491506001810190506123ab565b505080915050919050565b60006123d86117a3565b50600065deadbeef0040905060006001430360005b8581101561240457814092506001810190506123ed565b50505080915050919050565b60606080825114612456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244d90612b4b565b60405180910390fd5b60006006905060208301835160408482846000875af18061247657600080fd5b50505050919050565b60006124896117a3565b50600065deadbeef001590506000805b848110156124b05782159150600181019050612499565b505080915050919050565b60006124c56117a3565b50600065deadbeef001290506000805b848110156124ee578260011291506001810190506124d5565b505080915050919050565b60006125036117a3565b50600065deadbeef003b905060003060005b8581101561252c57813b9250600181019050612515565b50505080915050919050565b6000806003905060208301835160405160148183856000885af18061255c57600080fd5b815195505050505050919050565b60006125746117a3565b50600065deadbeef0009905060005b838110156125bd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600183099150600181019050612583565b5080915050919050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6125ee816125db565b81146125f957600080fd5b50565b60008135905061260b816125e5565b92915050565b600060208284031215612627576126266125d1565b5b6000612635848285016125fc565b91505092915050565b612647816125db565b82525050565b6000602082019050612662600083018461263e565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6126bb82612672565b810181811067ffffffffffffffff821117156126da576126d9612683565b5b80604052505050565b60006126ed6125c7565b90506126f982826126b2565b919050565b600067ffffffffffffffff82111561271957612718612683565b5b61272282612672565b9050602081019050919050565b82818337600083830152505050565b600061275161274c846126fe565b6126e3565b90508281526020810184848401111561276d5761276c61266d565b5b61277884828561272f565b509392505050565b600082601f83011261279557612794612668565b5b81356127a584826020860161273e565b91505092915050565b6000602082840312156127c4576127c36125d1565b5b600082013567ffffffffffffffff8111156127e2576127e16125d6565b5b6127ee84828501612780565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612831578082015181840152602081019050612816565b60008484015250505050565b6000612848826127f7565b6128528185612802565b9350612862818560208601612813565b61286b81612672565b840191505092915050565b60006020820190508181036000830152612890818461283d565b905092915050565b6000819050919050565b6128ab81612898565b82525050565b60006020820190506128c660008301846128a2565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128f7826128cc565b9050919050565b612907816128ec565b82525050565b600060208201905061292260008301846128fe565b92915050565b600080fd5b600080fd5b60008083601f84011261294857612947612668565b5b8235905067ffffffffffffffff81111561296557612964612928565b5b6020830191508360018202830111156129815761298061292d565b5b9250929050565b6000806020838503121561299f5761299e6125d1565b5b600083013567ffffffffffffffff8111156129bd576129bc6125d6565b5b6129c985828601612932565b92509250509250929050565b60007fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b612a0a816129d5565b82525050565b6000602082019050612a256000830184612a01565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612a7257607f821691505b602082108103612a8557612a84612a2b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612ac5826125db565b9150612ad0836125db565b9250828201905080821115612ae857612ae7612a8b565b5b92915050565b600082825260208201905092915050565b7f496e76616c696420696e707574206c656e677468000000000000000000000000600082015250565b6000612b35601483612aee565b9150612b4082612aff565b602082019050919050565b60006020820190508181036000830152612b6481612b28565b9050919050565b7f496e76616c696420696e7075742064617461206c656e6774682e000000000000600082015250565b6000612ba1601a83612aee565b9150612bac82612b6b565b602082019050919050565b60006020820190508181036000830152612bd081612b94565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c11826125db565b9150612c1c836125db565b925082612c2c57612c2b612bd7565b5b828206905092915050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612ca47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612c67565b612cae8683612c67565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612ceb612ce6612ce1846125db565b612cc6565b6125db565b9050919050565b6000819050919050565b612d0583612cd0565b612d19612d1182612cf2565b848454612c74565b825550505050565b600090565b612d2e612d21565b612d39818484612cfc565b505050565b5b81811015612d5d57612d52600082612d26565b600181019050612d3f565b5050565b601f821115612da257612d7381612c42565b612d7c84612c57565b81016020851015612d8b578190505b612d9f612d9785612c57565b830182612d3e565b50505b505050565b600082821c905092915050565b6000612dc560001984600802612da7565b1980831691505092915050565b6000612dde8383612db4565b9150826002028217905092915050565b612df88383612c37565b67ffffffffffffffff811115612e1157612e10612683565b5b612e1b8254612a5a565b612e26828285612d61565b6000601f831160018114612e555760008415612e43578287013590505b612e4d8582612dd2565b865550612eb5565b601f198416612e6386612c42565b60005b82811015612e8b57848901358255600182019150602085019450602081019050612e66565b86831015612ea85784890135612ea4601f891682612db4565b8355505b6001600288020188555050505b5050505050505056fea26469706673582212203124213488c2f1fca5968787f0c3e96fba8469129a80798e11ee752903b4bfdc64736f6c63430008130033", } // LoadTesterABI is the input ABI used to generate the binding from. @@ -516,6 +516,27 @@ func (_LoadTester *LoadTesterTransactorSession) TestBYTE(x *big.Int) (*types.Tra return _LoadTester.Contract.TestBYTE(&_LoadTester.TransactOpts, x) } +// TestBlake2f is a paid mutator transaction binding the contract method 0xa040aec6. +// +// Solidity: function testBlake2f(bytes inputData) returns(bytes result) +func (_LoadTester *LoadTesterTransactor) TestBlake2f(opts *bind.TransactOpts, inputData []byte) (*types.Transaction, error) { + return _LoadTester.contract.Transact(opts, "testBlake2f", inputData) +} + +// TestBlake2f is a paid mutator transaction binding the contract method 0xa040aec6. +// +// Solidity: function testBlake2f(bytes inputData) returns(bytes result) +func (_LoadTester *LoadTesterSession) TestBlake2f(inputData []byte) (*types.Transaction, error) { + return _LoadTester.Contract.TestBlake2f(&_LoadTester.TransactOpts, inputData) +} + +// TestBlake2f is a paid mutator transaction binding the contract method 0xa040aec6. +// +// Solidity: function testBlake2f(bytes inputData) returns(bytes result) +func (_LoadTester *LoadTesterTransactorSession) TestBlake2f(inputData []byte) (*types.Transaction, error) { + return _LoadTester.Contract.TestBlake2f(&_LoadTester.TransactOpts, inputData) +} + // TestCALLDATACOPY is a paid mutator transaction binding the contract method 0x3a425dfc. // // Solidity: function testCALLDATACOPY(uint256 x) returns(uint256) @@ -768,6 +789,48 @@ func (_LoadTester *LoadTesterTransactorSession) TestECAdd(inputData []byte) (*ty return _LoadTester.Contract.TestECAdd(&_LoadTester.TransactOpts, inputData) } +// TestECMul is a paid mutator transaction binding the contract method 0x962e4dc2. +// +// Solidity: function testECMul(bytes inputData) returns(bytes result) +func (_LoadTester *LoadTesterTransactor) TestECMul(opts *bind.TransactOpts, inputData []byte) (*types.Transaction, error) { + return _LoadTester.contract.Transact(opts, "testECMul", inputData) +} + +// TestECMul is a paid mutator transaction binding the contract method 0x962e4dc2. +// +// Solidity: function testECMul(bytes inputData) returns(bytes result) +func (_LoadTester *LoadTesterSession) TestECMul(inputData []byte) (*types.Transaction, error) { + return _LoadTester.Contract.TestECMul(&_LoadTester.TransactOpts, inputData) +} + +// TestECMul is a paid mutator transaction binding the contract method 0x962e4dc2. +// +// Solidity: function testECMul(bytes inputData) returns(bytes result) +func (_LoadTester *LoadTesterTransactorSession) TestECMul(inputData []byte) (*types.Transaction, error) { + return _LoadTester.Contract.TestECMul(&_LoadTester.TransactOpts, inputData) +} + +// TestECPairing is a paid mutator transaction binding the contract method 0x0b3b996a. +// +// Solidity: function testECPairing(bytes inputData) returns(bytes result) +func (_LoadTester *LoadTesterTransactor) TestECPairing(opts *bind.TransactOpts, inputData []byte) (*types.Transaction, error) { + return _LoadTester.contract.Transact(opts, "testECPairing", inputData) +} + +// TestECPairing is a paid mutator transaction binding the contract method 0x0b3b996a. +// +// Solidity: function testECPairing(bytes inputData) returns(bytes result) +func (_LoadTester *LoadTesterSession) TestECPairing(inputData []byte) (*types.Transaction, error) { + return _LoadTester.Contract.TestECPairing(&_LoadTester.TransactOpts, inputData) +} + +// TestECPairing is a paid mutator transaction binding the contract method 0x0b3b996a. +// +// Solidity: function testECPairing(bytes inputData) returns(bytes result) +func (_LoadTester *LoadTesterTransactorSession) TestECPairing(inputData []byte) (*types.Transaction, error) { + return _LoadTester.Contract.TestECPairing(&_LoadTester.TransactOpts, inputData) +} + // TestECRecover is a paid mutator transaction binding the contract method 0xa18683cb. // // Solidity: function testECRecover(bytes inputData) returns(address result) diff --git a/contracts/precompiledContracts.go b/contracts/precompiledContracts.go index 3b26bbe1..74016aa9 100644 --- a/contracts/precompiledContracts.go +++ b/contracts/precompiledContracts.go @@ -2,10 +2,11 @@ package contracts import ( "crypto/ecdsa" + "encoding/binary" + "encoding/hex" "fmt" - "math/rand" - // "encoding/binary" "math/big" + "math/rand" "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" @@ -16,15 +17,6 @@ import ( "github.com/rs/zerolog/log" ) -func byteSize(value *big.Int) int { - // Calculate the byte size of the input value - bytes := value.Bytes() - if len(bytes) == 0 { - return 0 - } - return len(bytes) -} - func GenerateECRecoverInput(privateKey *ecdsa.PrivateKey) []byte { message := []byte("Test ecRecover") messageHash := crypto.Keccak256Hash(message) @@ -105,6 +97,71 @@ func GenerateECAddInput() []byte { return inputData } +func GenerateECMulInput() []byte { + x1 := big.NewInt(1) + y1 := big.NewInt(2) + s := big.NewInt(2) + + // Convert the x and y coordinates to 32-byte arrays in big-endian format + x1Bytes := math.PaddedBigBytes(x1, 32) + y1Bytes := math.PaddedBigBytes(y1, 32) + sBytes := math.PaddedBigBytes(s, 32) + + inputData := append(append(append(x1Bytes, y1Bytes...), sBytes...)) + return inputData +} + +func GenerateECPairingInput() []byte { + x1 := "2cf44499d5d27bb186308b7af7af02ac5bc9eeb6a3d147c186b21fb1b76e18da" + y1 := "2c0f001f52110ccfe69108924926e45f0b0c868df0e7bde1fe16d3242dc715f6" + x2 := "1fb19bb476f6b9e44e2a32234da8212f61cd63919354bc06aef31e3cfaff3ebc" + y2 := "22606845ff186793914e03e21df544c34ffe2f2f3504de8a79d9159eca2d98d9" + x3 := "2bd368e28381e8eccb5fa81fc26cf3f048eea9abfdd85d7ed3ab3698d63e4f90" + y3 := "2fe02e47887507adf0ff1743cbac6ba291e66f59be6bd763950bb16041a0a85e" + + x4 := "0000000000000000000000000000000000000000000000000000000000000001" + y4 := "30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd45" + x5 := "1971ff0471b09fa93caaf13cbf443c1aede09cc4328f5a62aad45f40ec133eb4" + y5 := "091058a3141822985733cbdddfed0fd8d6c104e9e9eff40bf5abfef9ab163bc7" + x6 := "2a23af9a5ce2ba2796c1f4e453a370eb0af8c212d9dc9acd8fc02c2e907baea2" + y6 := "23a8eb0b0996252cb548a4487da97b02422ebc0e834613f954de6c7e0afdc1fc" + + inputHex := x1 + y1 + x2 + y2 + x3 + y3 + x4 + y4 + x5 + y5 + x6 + y6 + inputData, err := hex.DecodeString(inputHex) + if err != nil { + panic(err) + } + + return inputData +} + +func GenerateBlake2FInput() []byte { + rounds := uint32(12) + h := [8]uint64{1, 2, 3, 4, 5, 6, 7, 8} + m := [16]uint64{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16} + t := [2]uint64{1, 2} + f := byte(1) + + inputData := make([]byte, 213) + binary.BigEndian.PutUint32(inputData[0:4], rounds) + + for i := 0; i < 8; i++ { + binary.LittleEndian.PutUint64(inputData[4+(i*8):4+((i+1)*8)], h[i]) + } + + for i := 0; i < 16; i++ { + binary.LittleEndian.PutUint64(inputData[68+(i*8):68+((i+1)*8)], m[i]) + } + + for i := 0; i < 2; i++ { + binary.LittleEndian.PutUint64(inputData[196+(i*8):196+((i+1)*8)], t[i]) + } + + inputData[212] = f + + return inputData +} + func CallPrecompiledContracts(address int, lt *LoadTester, opts *bind.TransactOpts, iterations uint64, privateKey *ecdsa.PrivateKey) (*ethtypes.Transaction, error) { var inputData []byte @@ -133,15 +190,39 @@ func CallPrecompiledContracts(address int, lt *LoadTester, opts *bind.TransactOp log.Trace().Str("method", "TestECAdd").Msg("Executing contract method") inputData = GenerateECAddInput() return lt.TestECAdd(opts, inputData) - // case 7: - // case 8: - // case 9: + case 7: + log.Trace().Str("method", "TestECMul").Msg("Executing contract method") + inputData = GenerateECMulInput() + return lt.TestECMul(opts, inputData) + case 8: + log.Trace().Str("method", "TestECPairing").Msg("Executing contract method") + inputData = GenerateECPairingInput() + return lt.TestECPairing(opts, inputData) + case 9: + log.Trace().Str("method", "TestBlake2f").Msg("Executing contract method") + inputData = GenerateECPairingInput() + return lt.TestBlake2f(opts, inputData) } return nil, fmt.Errorf("Unrecognized precompiled address %d", address) } func GetRandomPrecompiledContractAddress() int { - n := 6 + codes := []int{ + 1, + 2, + 3, + 4, + 5, + // 6, // NOTE: ecAdd requires a lot of gas and buggy + // 7, // NOTE: ecMul requires a lot of gas and buggy + 8, + 9, + } + + return codes[rand.Intn(len(codes))] + /** + n := 9 return rand.Intn(n) + 1 // [1, n + 1) + */ } From d045b11d32076438b07288a4585becfdabe3922f Mon Sep 17 00:00:00 2001 From: Idris Hanafi Date: Thu, 30 Mar 2023 13:13:42 -0400 Subject: [PATCH 6/7] lint: remove unnecessary append --- contracts/precompiledContracts.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/precompiledContracts.go b/contracts/precompiledContracts.go index 74016aa9..b4f0cbf6 100644 --- a/contracts/precompiledContracts.go +++ b/contracts/precompiledContracts.go @@ -107,7 +107,7 @@ func GenerateECMulInput() []byte { y1Bytes := math.PaddedBigBytes(y1, 32) sBytes := math.PaddedBigBytes(s, 32) - inputData := append(append(append(x1Bytes, y1Bytes...), sBytes...)) + inputData := append(append(x1Bytes, y1Bytes...), sBytes...) return inputData } From ac5e7d5a1164ed0b8bc9f87d220919b8922778a2 Mon Sep 17 00:00:00 2001 From: Idris Hanafi Date: Thu, 30 Mar 2023 13:49:39 -0400 Subject: [PATCH 7/7] lint: remove unnecessary comments --- contracts/contracts.go | 1 - contracts/precompiledContracts.go | 4 ---- 2 files changed, 5 deletions(-) diff --git a/contracts/contracts.go b/contracts/contracts.go index 4801f8a9..60e357c5 100644 --- a/contracts/contracts.go +++ b/contracts/contracts.go @@ -10,7 +10,6 @@ import ( "github.com/ethereum/go-ethereum/accounts/abi/bind" ethtypes "github.com/ethereum/go-ethereum/core/types" - // "github.com/ethereum/go-ethereum/core/vm" "github.com/rs/zerolog/log" ) diff --git a/contracts/precompiledContracts.go b/contracts/precompiledContracts.go index b4f0cbf6..fd7e8202 100644 --- a/contracts/precompiledContracts.go +++ b/contracts/precompiledContracts.go @@ -221,8 +221,4 @@ func GetRandomPrecompiledContractAddress() int { } return codes[rand.Intn(len(codes))] - /** - n := 9 - return rand.Intn(n) + 1 // [1, n + 1) - */ }