Commit 1a22e822 authored by smartcontracts's avatar smartcontracts Committed by GitHub

style(ctb): fix revert messages globally (#3005)

Updates revert messages across all contracts to use the standardized
format "<ContractName>: <lowercase message>".
parent 7a1c7a92
---
'@eth-optimism/contracts-bedrock': patch
---
Standardizes revert strings globally
......@@ -37,7 +37,7 @@ type L2OutputOracleOutputProposal struct {
// L2OutputOracleMetaData contains all meta data concerning the L2OutputOracle contract.
var L2OutputOracleMetaData = &bind.MetaData{
ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_submissionInterval\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_genesisL2Output\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_historicalTotalBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_startingBlockNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_startingTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_l2BlockTime\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"outputRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"l1Timestamp\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"l2BlockNumber\",\"type\":\"uint256\"}],\"name\":\"OutputDeleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"outputRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"l1Timestamp\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"l2BlockNumber\",\"type\":\"uint256\"}],\"name\":\"OutputProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousProposer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newProposer\",\"type\":\"address\"}],\"name\":\"ProposerChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"HISTORICAL_TOTAL_BLOCKS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"L2_BLOCK_TIME\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAJOR_VERSION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINOR_VERSION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PATCH_VERSION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STARTING_BLOCK_NUMBER\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STARTING_TIMESTAMP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SUBMISSION_INTERVAL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newProposer\",\"type\":\"address\"}],\"name\":\"changeProposer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_l2BlockNumber\",\"type\":\"uint256\"}],\"name\":\"computeL2Timestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"outputRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"internalType\":\"structL2OutputOracle.OutputProposal\",\"name\":\"_proposal\",\"type\":\"tuple\"}],\"name\":\"deleteL2Output\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_l2BlockNumber\",\"type\":\"uint256\"}],\"name\":\"getL2Output\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"outputRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"internalType\":\"structL2OutputOracle.OutputProposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_genesisL2Output\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_startingBlockNumber\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_outputRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_l2BlockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_l1Blockhash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_l1BlockNumber\",\"type\":\"uint256\"}],\"name\":\"proposeL2Output\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proposer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]",
Bin: "0x6101806040523480156200001257600080fd5b5060405162001e4538038062001e458339810160408190526200003591620005ca565b6000608081905260a052600160c052428310620000cb5760405162461bcd60e51b815260206004820152604360248201527f4f7574707574204f7261636c653a20496e697469616c204c3220626c6f636b2060448201527f74696d65206d757374206265206c657373207468616e2063757272656e742074606482015262696d6560e81b608482015260a4015b60405180910390fd5b60e0889052610100869052610120859052610140849052610160839052620000f68786848462000104565b50505050505050506200063c565b6000620001126001620001cd565b905080156200012b576000805461ff0019166101001790555b6040805180820182528681524260208083019182526000888152606790915292909220905181559051600190910155606684905562000169620002e0565b620001748362000348565b6200017f82620004ea565b8015620001c6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60008054610100900460ff161562000262578160ff16600114801562000206575062000204306200053c60201b620011ec1760201c565b155b6200025a5760405162461bcd60e51b815260206004820152602e602482015260008051602062001e0583398151915260448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620000c2565b506000919050565b60005460ff808416911610620002c15760405162461bcd60e51b815260206004820152602e602482015260008051602062001e0583398151915260448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620000c2565b506000805460ff191660ff92909216919091179055600190565b919050565b600054610100900460ff166200033c5760405162461bcd60e51b815260206004820152602b602482015260008051602062001e2583398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000c2565b620003466200054b565b565b6033546001600160a01b03163314620003a45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620000c2565b6001600160a01b038116620004135760405162461bcd60e51b815260206004820152602e60248201527f4f75747075744f7261636c653a206e65772070726f706f73657220697320746860448201526d65207a65726f206164647265737360901b6064820152608401620000c2565b6033546001600160a01b03828116911614156200048e5760405162461bcd60e51b815260206004820152603260248201527f4f75747075744f7261636c653a2070726f706f7365722063616e6e6f742062656044820152711039b0b6b29030b9903a34329037bbb732b960711b6064820152608401620000c2565b6065546040516001600160a01b038084169216907f3d7728dc2838bb794606bd89f5a37930830b32060f69ee929bbfc59b669024dd90600090a3606580546001600160a01b0319166001600160a01b0392909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03163b151590565b600054610100900460ff16620005a75760405162461bcd60e51b815260206004820152602b602482015260008051602062001e2583398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000c2565b6200034633620004ea565b80516001600160a01b0381168114620002db57600080fd5b600080600080600080600080610100898b031215620005e857600080fd5b885197506020890151965060408901519550606089015194506080890151935060a089015192506200061d60c08a01620005b2565b91506200062d60e08a01620005b2565b90509295985092959890939650565b60805160a05160c05160e05161010051610120516101405161016051611739620006cc600039600081816101750152610f0b0152600081816101de0152610f6401526000818161022801528181610e350152610f2f015260006103cc01526000818161025c01528181610772015261108b015260006102900152600061042d015260006104d601526117396000f3fe60806040526004361061015e5760003560e01c80639aaab648116100c0578063d1de856c11610074578063dcec334811610059578063dcec33481461048f578063f2fde38b146104a4578063f786becd146104c457600080fd5b8063d1de856c1461044f578063d20b1a511461046f57600080fd5b8063a4771aad116100a5578063a4771aad146103ba578063a8e4fb90146103ee578063c8b915311461041b57600080fd5b80639aaab64814610333578063a25ae5571461034657600080fd5b8063529933df11610117578063715018a6116100fc578063715018a6146102b257806372d5fe21146102c75780638da5cb5b146102e757600080fd5b8063529933df1461024a5780636bf2606a1461027e57600080fd5b806320e9fcd41161014857806320e9fcd4146101cc5780634599c788146102005780634ab65d731461021657600080fd5b80622134cc14610163578063093b3d90146101aa575b600080fd5b34801561016f57600080fd5b506101977f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b3480156101b657600080fd5b506101ca6101c5366004611544565b6104f8565b005b3480156101d857600080fd5b506101977f000000000000000000000000000000000000000000000000000000000000000081565b34801561020c57600080fd5b5061019760665481565b34801561022257600080fd5b506101977f000000000000000000000000000000000000000000000000000000000000000081565b34801561025657600080fd5b506101977f000000000000000000000000000000000000000000000000000000000000000081565b34801561028a57600080fd5b506101977f000000000000000000000000000000000000000000000000000000000000000081565b3480156102be57600080fd5b506101ca61079e565b3480156102d357600080fd5b506101ca6102e23660046115de565b61082b565b3480156102f357600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a1565b6101ca610341366004611600565b610a88565b34801561035257600080fd5b5061039f610361366004611632565b604080518082019091526000808252602082015250600090815260676020908152604091829020825180840190935280548352600101549082015290565b604080518251815260209283015192810192909252016101a1565b3480156103c657600080fd5b506101977f000000000000000000000000000000000000000000000000000000000000000081565b3480156103fa57600080fd5b5060655461030e9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561042757600080fd5b506101977f000000000000000000000000000000000000000000000000000000000000000081565b34801561045b57600080fd5b5061019761046a366004611632565b610e31565b34801561047b57600080fd5b506101ca61048a36600461164b565b610f8e565b34801561049b57600080fd5b50610197611087565b3480156104b057600080fd5b506101ca6104bf3660046115de565b6110bc565b3480156104d057600080fd5b506101977f000000000000000000000000000000000000000000000000000000000000000081565b60335473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6066546000908152606760209081526040918290208251808401909352805480845260019091015491830191909152825114610662576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605260248201527f4f75747075744f7261636c653a20546865206f757470757420726f6f7420746f60448201527f2064656c65746520646f6573206e6f74206d6174636820746865206c6174657360648201527f74206f75747075742070726f706f73616c2e0000000000000000000000000000608482015260a401610575565b806020015182602001511461071f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605060248201527f4f75747075744f7261636c653a205468652074696d657374616d7020746f206460448201527f656c65746520646f6573206e6f74206d6174636820746865206c61746573742060648201527f6f75747075742070726f706f73616c2e00000000000000000000000000000000608482015260a401610575565b606654602082015182516040517f11e942315215fbc11bf574b22ca610d001e704d870a2307833c188d31600b5c690600090a46066805460009081526067602052604081208181556001015554610797907f0000000000000000000000000000000000000000000000000000000000000000906116c0565b6066555050565b60335473ffffffffffffffffffffffffffffffffffffffff16331461081f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610575565b6108296000611208565b565b60335473ffffffffffffffffffffffffffffffffffffffff1633146108ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610575565b73ffffffffffffffffffffffffffffffffffffffff811661094f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4f75747075744f7261636c653a206e65772070726f706f73657220697320746860448201527f65207a65726f20616464726573730000000000000000000000000000000000006064820152608401610575565b60335473ffffffffffffffffffffffffffffffffffffffff828116911614156109fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f75747075744f7261636c653a2070726f706f7365722063616e6e6f7420626560448201527f2073616d6520617320746865206f776e657200000000000000000000000000006064820152608401610575565b60655460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f3d7728dc2838bb794606bd89f5a37930830b32060f69ee929bbfc59b669024dd90600090a3606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60655473ffffffffffffffffffffffffffffffffffffffff163314610b2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4f75747075744f7261636c653a2063616c6c6572206973206e6f74207468652060448201527f70726f706f7365720000000000000000000000000000000000000000000000006064820152608401610575565b610b37611087565b8314610beb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604760248201527f4f75747075744f7261636c653a20426c6f636b206e756d626572206d7573742060448201527f626520657175616c20746f206e65787420657870656374656420626c6f636b2060648201527f6e756d6265722e00000000000000000000000000000000000000000000000000608482015260a401610575565b42610bf584610e31565b10610c82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4f75747075744f7261636c653a2043616e6e6f742070726f706f7365204c322060448201527f6f757470757420696e206675747572652e0000000000000000000000000000006064820152608401610575565b83610d0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4f75747075744f7261636c653a2043616e6e6f74207375626d697420656d707460448201527f79204c32206f75747075742e00000000000000000000000000000000000000006064820152608401610575565b8115610dcb5781814014610dcb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604760248201527f4f75747075744f7261636c653a20426c6f636b6861736820646f6573206e6f7460448201527f206d61746368207468652068617368206174207468652065787065637465642060648201527f6865696768742e00000000000000000000000000000000000000000000000000608482015260a401610575565b6040805180820182528581524260208083018281526000888152606790925284822093518455516001909301929092556066869055915185929187917fc120f5e881491e6e212befa39e36b8f57d5eca31915f2e5d60a420f418caa6df9190a450505050565b60007f0000000000000000000000000000000000000000000000000000000000000000821015610f09576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605660248201527f4f75747075744f7261636c653a20426c6f636b206e756d626572206d7573742060448201527f62652067726561746572207468616e206f7220657175616c20746f207468652060648201527f7374617274696e6720626c6f636b206e756d6265722e00000000000000000000608482015260a401610575565b7f0000000000000000000000000000000000000000000000000000000000000000610f547f0000000000000000000000000000000000000000000000000000000000000000846116c0565b610f5e91906116d7565b610f88907f0000000000000000000000000000000000000000000000000000000000000000611714565b92915050565b6000610f9a600161127f565b90508015610fcf57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6040805180820182528681524260208083019182526000888152606790915292909220905181559051600190910155606684905561100b61140a565b6110148361082b565b61101d82611208565b801561108057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006066546110b79190611714565b905090565b60335473ffffffffffffffffffffffffffffffffffffffff16331461113d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610575565b73ffffffffffffffffffffffffffffffffffffffff81166111e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610575565b6111e981611208565b50565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008054610100900460ff1615611336578160ff1660011480156112a25750303b155b61132e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610575565b506000919050565b60005460ff8084169116106113cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610575565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600054610100900460ff166114a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610575565b610829600054610100900460ff1661153b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610575565b61082933611208565b60006040828403121561155657600080fd5b6040516040810181811067ffffffffffffffff821117156115a0577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052823581526020928301359281019290925250919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461140557600080fd5b6000602082840312156115f057600080fd5b6115f9826115ba565b9392505050565b6000806000806080858703121561161657600080fd5b5050823594602084013594506040840135936060013592509050565b60006020828403121561164457600080fd5b5035919050565b6000806000806080858703121561166157600080fd5b8435935060208501359250611678604086016115ba565b9150611686606086016115ba565b905092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156116d2576116d2611691565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561170f5761170f611691565b500290565b6000821982111561172757611727611691565b50019056fea164736f6c634300080a000a496e697469616c697a61626c653a20636f6e747261637420697320616c726561496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069",
Bin: "0x6101806040523480156200001257600080fd5b5060405162001e6138038062001e618339810160408190526200003591620005e6565b6000608081905260a052600160c052428310620000cd5760405162461bcd60e51b8152602060048201526044602482018190527f4c324f75747075744f7261636c653a20696e697469616c204c3220626c6f636b908201527f2074696d65206d757374206265206c657373207468616e2063757272656e742060648201526374696d6560e01b608482015260a4015b60405180910390fd5b60e0889052610100869052610120859052610140849052610160839052620000f88786848462000106565b505050505050505062000658565b6000620001146001620001cf565b905080156200012d576000805461ff0019166101001790555b604080518082018252868152426020808301918252600088815260679091529290922090518155905160019091015560668490556200016b620002e2565b62000176836200034a565b620001818262000506565b8015620001c8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60008054610100900460ff161562000264578160ff16600114801562000208575062000206306200055860201b620011ec1760201c565b155b6200025c5760405162461bcd60e51b815260206004820152602e602482015260008051602062001e2183398151915260448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620000c4565b506000919050565b60005460ff808416911610620002c35760405162461bcd60e51b815260206004820152602e602482015260008051602062001e2183398151915260448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620000c4565b506000805460ff191660ff92909216919091179055600190565b919050565b600054610100900460ff166200033e5760405162461bcd60e51b815260206004820152602b602482015260008051602062001e4183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000c4565b6200034862000567565b565b6033546001600160a01b03163314620003a65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620000c4565b6001600160a01b038116620004245760405162461bcd60e51b815260206004820152603760248201527f4c324f75747075744f7261636c653a206e65772070726f706f7365722063616e60448201527f6e6f7420626520746865207a65726f20616464726573730000000000000000006064820152608401620000c4565b6033546001600160a01b0382811691161415620004aa5760405162461bcd60e51b815260206004820152603860248201527f4c324f75747075744f7261636c653a2070726f706f7365722063616e6e6f742060448201527f6265207468652073616d6520617320746865206f776e657200000000000000006064820152608401620000c4565b6065546040516001600160a01b038084169216907f3d7728dc2838bb794606bd89f5a37930830b32060f69ee929bbfc59b669024dd90600090a3606580546001600160a01b0319166001600160a01b0392909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03163b151590565b600054610100900460ff16620005c35760405162461bcd60e51b815260206004820152602b602482015260008051602062001e4183398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000c4565b620003483362000506565b80516001600160a01b0381168114620002dd57600080fd5b600080600080600080600080610100898b0312156200060457600080fd5b885197506020890151965060408901519550606089015194506080890151935060a089015192506200063960c08a01620005ce565b91506200064960e08a01620005ce565b90509295985092959890939650565b60805160a05160c05160e05161010051610120516101405161016051611739620006e8600039600081816101750152610f0b0152600081816101de0152610f6401526000818161022801528181610e350152610f2f015260006103cc01526000818161025c01528181610772015261108b015260006102900152600061042d015260006104d601526117396000f3fe60806040526004361061015e5760003560e01c80639aaab648116100c0578063d1de856c11610074578063dcec334811610059578063dcec33481461048f578063f2fde38b146104a4578063f786becd146104c457600080fd5b8063d1de856c1461044f578063d20b1a511461046f57600080fd5b8063a4771aad116100a5578063a4771aad146103ba578063a8e4fb90146103ee578063c8b915311461041b57600080fd5b80639aaab64814610333578063a25ae5571461034657600080fd5b8063529933df11610117578063715018a6116100fc578063715018a6146102b257806372d5fe21146102c75780638da5cb5b146102e757600080fd5b8063529933df1461024a5780636bf2606a1461027e57600080fd5b806320e9fcd41161014857806320e9fcd4146101cc5780634599c788146102005780634ab65d731461021657600080fd5b80622134cc14610163578063093b3d90146101aa575b600080fd5b34801561016f57600080fd5b506101977f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b3480156101b657600080fd5b506101ca6101c5366004611544565b6104f8565b005b3480156101d857600080fd5b506101977f000000000000000000000000000000000000000000000000000000000000000081565b34801561020c57600080fd5b5061019760665481565b34801561022257600080fd5b506101977f000000000000000000000000000000000000000000000000000000000000000081565b34801561025657600080fd5b506101977f000000000000000000000000000000000000000000000000000000000000000081565b34801561028a57600080fd5b506101977f000000000000000000000000000000000000000000000000000000000000000081565b3480156102be57600080fd5b506101ca61079e565b3480156102d357600080fd5b506101ca6102e23660046115de565b61082b565b3480156102f357600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a1565b6101ca610341366004611600565b610a88565b34801561035257600080fd5b5061039f610361366004611632565b604080518082019091526000808252602082015250600090815260676020908152604091829020825180840190935280548352600101549082015290565b604080518251815260209283015192810192909252016101a1565b3480156103c657600080fd5b506101977f000000000000000000000000000000000000000000000000000000000000000081565b3480156103fa57600080fd5b5060655461030e9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561042757600080fd5b506101977f000000000000000000000000000000000000000000000000000000000000000081565b34801561045b57600080fd5b5061019761046a366004611632565b610e31565b34801561047b57600080fd5b506101ca61048a36600461164b565b610f8e565b34801561049b57600080fd5b50610197611087565b3480156104b057600080fd5b506101ca6104bf3660046115de565b6110bc565b3480156104d057600080fd5b506101977f000000000000000000000000000000000000000000000000000000000000000081565b60335473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6066546000908152606760209081526040918290208251808401909352805480845260019091015491830191909152825114610662576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604f60248201527f4c324f75747075744f7261636c653a206f757470757420726f6f7420746f206460448201527f656c65746520646f6573206e6f74206d6174636820746865206c61746573742060648201527f6f75747075742070726f706f73616c0000000000000000000000000000000000608482015260a401610575565b806020015182602001511461071f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f4c324f75747075744f7261636c653a2074696d657374616d7020746f2064656c60448201527f65746520646f6573206e6f74206d6174636820746865206c6174657374206f7560648201527f747075742070726f706f73616c00000000000000000000000000000000000000608482015260a401610575565b606654602082015182516040517f11e942315215fbc11bf574b22ca610d001e704d870a2307833c188d31600b5c690600090a46066805460009081526067602052604081208181556001015554610797907f0000000000000000000000000000000000000000000000000000000000000000906116c0565b6066555050565b60335473ffffffffffffffffffffffffffffffffffffffff16331461081f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610575565b6108296000611208565b565b60335473ffffffffffffffffffffffffffffffffffffffff1633146108ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610575565b73ffffffffffffffffffffffffffffffffffffffff811661094f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4c324f75747075744f7261636c653a206e65772070726f706f7365722063616e60448201527f6e6f7420626520746865207a65726f20616464726573730000000000000000006064820152608401610575565b60335473ffffffffffffffffffffffffffffffffffffffff828116911614156109fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4c324f75747075744f7261636c653a2070726f706f7365722063616e6e6f742060448201527f6265207468652073616d6520617320746865206f776e657200000000000000006064820152608401610575565b60655460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f3d7728dc2838bb794606bd89f5a37930830b32060f69ee929bbfc59b669024dd90600090a3606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60655473ffffffffffffffffffffffffffffffffffffffff163314610b2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4c324f75747075744f7261636c653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642062792070726f706f7365720000000000000000006064820152608401610575565b610b37611087565b8314610beb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f4c324f75747075744f7261636c653a20626c6f636b206e756d626572206d757360448201527f7420626520657175616c20746f206e65787420657870656374656420626c6f6360648201527f6b206e756d626572000000000000000000000000000000000000000000000000608482015260a401610575565b42610bf584610e31565b10610c82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4c324f75747075744f7261636c653a2063616e6e6f742070726f706f7365204c60448201527f32206f757470757420696e2074686520667574757265000000000000000000006064820152608401610575565b83610d0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4c324f75747075744f7261636c653a204c32206f75747075742070726f706f7360448201527f616c2063616e6e6f7420626520746865207a65726f20686173680000000000006064820152608401610575565b8115610dcb5781814014610dcb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f4c324f75747075744f7261636c653a20626c6f636b6861736820646f6573206e60448201527f6f74206d6174636820746865206861736820617420746865206578706563746560648201527f6420686569676874000000000000000000000000000000000000000000000000608482015260a401610575565b6040805180820182528581524260208083018281526000888152606790925284822093518455516001909301929092556066869055915185929187917fc120f5e881491e6e212befa39e36b8f57d5eca31915f2e5d60a420f418caa6df9190a450505050565b60007f0000000000000000000000000000000000000000000000000000000000000000821015610f09576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f4c324f75747075744f7261636c653a20626c6f636b206e756d626572206d757360448201527f742062652067726561746572207468616e206f7220657175616c20746f20737460648201527f617274696e6720626c6f636b206e756d62657200000000000000000000000000608482015260a401610575565b7f0000000000000000000000000000000000000000000000000000000000000000610f547f0000000000000000000000000000000000000000000000000000000000000000846116c0565b610f5e91906116d7565b610f88907f0000000000000000000000000000000000000000000000000000000000000000611714565b92915050565b6000610f9a600161127f565b90508015610fcf57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6040805180820182528681524260208083019182526000888152606790915292909220905181559051600190910155606684905561100b61140a565b6110148361082b565b61101d82611208565b801561108057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006066546110b79190611714565b905090565b60335473ffffffffffffffffffffffffffffffffffffffff16331461113d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610575565b73ffffffffffffffffffffffffffffffffffffffff81166111e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610575565b6111e981611208565b50565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008054610100900460ff1615611336578160ff1660011480156112a25750303b155b61132e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610575565b506000919050565b60005460ff8084169116106113cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610575565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600054610100900460ff166114a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610575565b610829600054610100900460ff1661153b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610575565b61082933611208565b60006040828403121561155657600080fd5b6040516040810181811067ffffffffffffffff821117156115a0577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052823581526020928301359281019290925250919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461140557600080fd5b6000602082840312156115f057600080fd5b6115f9826115ba565b9392505050565b6000806000806080858703121561161657600080fd5b5050823594602084013594506040840135936060013592509050565b60006020828403121561164457600080fd5b5035919050565b6000806000806080858703121561166157600080fd5b8435935060208501359250611678604086016115ba565b9150611686606086016115ba565b905092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156116d2576116d2611691565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561170f5761170f611691565b500290565b6000821982111561172757611727611691565b50019056fea164736f6c634300080a000a496e697469616c697a61626c653a20636f6e747261637420697320616c726561496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069",
}
// L2OutputOracleABI is the input ABI used to generate the binding from.
......
......@@ -39,7 +39,7 @@ type HashingOutputRootProof struct {
// OptimismPortalMetaData contains all meta data concerning the OptimismPortal contract.
var OptimismPortalMetaData = &bind.MetaData{
ABI: "[{\"inputs\":[{\"internalType\":\"contractL2OutputOracle\",\"name\":\"_l2Oracle\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_finalizationPeriodSeconds\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mint\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"gasLimit\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isCreation\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"TransactionDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"withdrawalHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"name\":\"WithdrawalFinalized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BASE_FEE_MAX_CHANGE_DENOMINATOR\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ELASTICITY_MULTIPLIER\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FINALIZATION_PERIOD_SECONDS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIAL_BASE_FEE\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"L2_ORACLE\",\"outputs\":[{\"internalType\":\"contractL2OutputOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAJOR_VERSION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_RESOURCE_LIMIT\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINIMUM_BASE_FEE\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINOR_VERSION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PATCH_VERSION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TARGET_RESOURCE_LIMIT\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"_gasLimit\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"_isCreation\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"depositTransaction\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_l2BlockNumber\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"version\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"withdrawerStorageRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"latestBlockhash\",\"type\":\"bytes32\"}],\"internalType\":\"structHashing.OutputRootProof\",\"name\":\"_outputRootProof\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_withdrawalProof\",\"type\":\"bytes\"}],\"name\":\"finalizeWithdrawalTransaction\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"finalizedWithdrawals\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_l2BlockNumber\",\"type\":\"uint256\"}],\"name\":\"isOutputFinalized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l2Sender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"params\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"prevBaseFee\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"prevBoughtGas\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"prevBlockNum\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]",
Bin: "0x6101206040523480156200001257600080fd5b5060405162004005380380620040058339810160408190526200003591620002bc565b6000608081905260a052600160c0526001600160a01b0382166101005260e08190526200006162000069565b5050620002f8565b6000620000776001620000f8565b9050801562000090576000805461ff0019166101001790555b603380546001600160a01b03191661dead179055620000ae6200020a565b8015620000f5576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60008054610100900460ff161562000191578160ff1660011480156200013157506200012f30620002ad60201b620014391760201c565b155b620001895760405162461bcd60e51b815260206004820152602e602482015260008051602062003fe583398151915260448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b506000919050565b60005460ff808416911610620001f05760405162461bcd60e51b815260206004820152602e602482015260008051602062003fe583398151915260448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000180565b506000805460ff191660ff92909216919091179055600190565b600054610100900460ff16620002775760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840162000180565b60408051606081018252633b9aca0080825260006020830152436001600160401b031691909201819052600160c01b0217600155565b6001600160a01b03163b151590565b60008060408385031215620002d057600080fd5b82516001600160a01b0381168114620002e857600080fd5b6020939093015192949293505050565b60805160a05160c05160e05161010051613c776200036e6000396000818161016a0152818161099101528181610a0801528181610a9b01528181610b6d0152610ec301526000818161044c01528181610c1f0152610f460152600061023b01526000610327015260006104800152613c776000f3fe60806040526004361061012c5760003560e01c8063a14238e7116100a5578063cff0ab9611610074578063eecf1c3611610059578063eecf1c3614610427578063f4daa2911461043a578063f786becd1461046e57600080fd5b8063cff0ab9614610373578063e9e05c421461041457600080fd5b8063a14238e7146102e5578063c8b9153114610315578063ca3e99ba14610349578063cd7c97891461035e57600080fd5b80636bf2606a116100fc5780638129fc1c116100e15780638129fc1c1461028d578063867ead13146102a25780639bf62d82146102b857600080fd5b80636bf2606a146102295780636dbffb781461025d57600080fd5b80621c2ff61461015857806313620abd146101b657806364b79208146101ef5780636bb0291e1461021457600080fd5b36610153576101513334620186a06000604051806020016040528060008152506104a2565b005b600080fd5b34801561016457600080fd5b5061018c7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101c257600080fd5b506101ce633b9aca0081565b6040516fffffffffffffffffffffffffffffffff90911681526020016101ad565b3480156101fb57600080fd5b50610206627a120081565b6040519081526020016101ad565b34801561022057600080fd5b50610206600481565b34801561023557600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b34801561026957600080fd5b5061027d61027836600461331b565b610948565b60405190151581526020016101ad565b34801561029957600080fd5b50610151610c56565b3480156102ae57600080fd5b5061020661271081565b3480156102c457600080fd5b5060335461018c9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102f157600080fd5b5061027d61030036600461331b565b60346020526000908152604090205460ff1681565b34801561032157600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b34801561035557600080fd5b50610206610d31565b34801561036a57600080fd5b50610206600881565b34801561037f57600080fd5b506001546103db906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff92831660208501529116908201526060016101ad565b6101516104223660046133d6565b6104a2565b610151610435366004613520565b610d42565b34801561044657600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b34801561047a57600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b8260005a905083156105595773ffffffffffffffffffffffffffffffffffffffff87161561055957604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f4f7074696d69736d506f7274616c3a206d7573742073656e6420746f2061646460448201527f72657373283029207768656e206372656174696e67206120636f6e747261637460648201526084015b60405180910390fd5b3332811461057a575033731111000000000000000000000000000000001111015b8773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f78231ae6eb73366f912bb1d64351601fb76344c537bbab635ce14d0f376f0195348a8a8a8a6040516105df95949392919061368b565b60405180910390a35060015460009061061e907801000000000000000000000000000000000000000000000000900467ffffffffffffffff16436136f1565b905080156107a75760006106366004627a1200613737565b6001546106619190700100000000000000000000000000000000900467ffffffffffffffff1661379f565b9050600060086106756004627a1200613737565b6001546106959085906fffffffffffffffffffffffffffffffff16613813565b61069f9190613737565b6106a99190613737565b6001549091506000906106f5906106df906106d79085906fffffffffffffffffffffffffffffffff166138cf565b612710611455565b6fffffffffffffffffffffffffffffffff611470565b90506001841115610768576107656106df670de0b6b3a764000061075161071d600883613737565b61072f90670de0b6b3a764000061379f565b61073a60018a6136f1565b61074c90670de0b6b3a7640000613943565b61147f565b61075b9085613813565b6106d79190613737565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b600180548491906010906107da908490700100000000000000000000000000000000900467ffffffffffffffff16613980565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550627a1200600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1613156108b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603c60248201527f4f7074696d69736d506f7274616c3a2063616e6e6f7420627579206d6f72652060448201527f676173207468616e20617661696c61626c6520676173206c696d6974000000006064820152608401610550565b6001546000906108e2906fffffffffffffffffffffffffffffffff1667ffffffffffffffff86166139ac565b6fffffffffffffffffffffffffffffffff169050600061090648633b9aca006114b0565b61091090836139e4565b905060005a61091f90866136f1565b90508082111561093b5761093b61093682846136f1565b6114c0565b5050505050505050505050565b6040517fa25ae55700000000000000000000000000000000000000000000000000000000815260048101829052600090819073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063a25ae557906024016040805180830381865afa1580156109d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fb91906139f8565b8051909150610c1d5760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663529933df6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a959190613a47565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634ab65d736040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b289190613a47565b905084811115610b3d57506000949350505050565b600082610b4a83886136f1565b610b549190613a60565b905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663a25ae557610b9c83866136f1565b610ba69089613a74565b6040518263ffffffff1660e01b8152600401610bc491815260200190565b6040805180830381865afa158015610be0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0491906139f8565b8051909450610c195750600095945050505050565b5050505b7f00000000000000000000000000000000000000000000000000000000000000008160200151610c4d9190613a74565b42119392505050565b6000610c6260016114ee565b90508015610c9757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055610ccb611679565b8015610d2e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b610d3f6004627a1200613737565b81565b60335473ffffffffffffffffffffffffffffffffffffffff1661dead14610deb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a2063616e206f6e6c79207472696767657260448201527f206f6e65207769746864726177616c20706572207472616e73616374696f6e006064820152608401610550565b73ffffffffffffffffffffffffffffffffffffffff8916301415610e91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a20796f752063616e6e6f742073656e642060448201527f6d6573736167657320746f2074686520706f7274616c20636f6e7472616374006064820152608401610550565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018590526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a25ae557906024016040805180830381865afa158015610f1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4291906139f8565b90507f00000000000000000000000000000000000000000000000000000000000000008160200151610f749190613a74565b4211611002576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4f7074696d69736d506f7274616c3a2070726f706f73616c206973206e6f742060448201527f7965742066696e616c697a6564000000000000000000000000000000000000006064820152608401610550565b61101961101436869003860186613a8c565b61175c565b8151146110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f7074696d69736d506f7274616c3a20696e76616c6964206f7574707574207260448201527f6f6f742070726f6f6600000000000000000000000000000000000000000000006064820152608401610550565b60006110ee8d8d8d8d8d8d8d8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506117b892505050565b905061113581866040013586868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506117f792505050565b6111c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a20696e76616c696420776974686472617760448201527f616c20696e636c7573696f6e2070726f6f6600000000000000000000000000006064820152608401610550565b60008181526034602052604090205460ff1615611260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206160448201527f6c7265616479206265656e2066696e616c697a656400000000000000000000006064820152608401610550565b600081815260346020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556112a3614e208a613a74565b5a1015611332576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4f7074696d69736d506f7274616c3a20696e73756666696369656e742067617360448201527f20746f2066696e616c697a65207769746864726177616c0000000000000000006064820152608401610550565b603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8e16179055604080516020601f8a018190048102820181019092528881526000916113bb918e918d918f918691908f908f90819084018382808284376000920191909152506118c092505050565b50603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405190915082907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b9061142190841515815260200190565b60405180910390a25050505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b6000818312156114655781611467565b825b90505b92915050565b60008183126114655781611467565b6000611467670de0b6b3a7640000836114978661194b565b6114a19190613813565b6114ab9190613737565b611b8f565b6000818310156114655781611467565b6000805a90505b825a6114d390836136f1565b10156114e9576114e282613af2565b91506114c7565b505050565b60008054610100900460ff16156115a5578160ff1660011480156115115750303b155b61159d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610550565b506000919050565b60005460ff80841691161061163c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610550565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600054610100900460ff16611710576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610550565b60408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6000816000015182602001518360400151846060015160405160200161179b949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b60008686868686866040516020016117d596959493929190613b2b565b6040516020818303038152906040528051906020012090509695505050505050565b604080516020810185905260009181018290528190606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830181905292506118b59101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152600182527f01000000000000000000000000000000000000000000000000000000000000006020830152908587611dce565b9150505b9392505050565b6000606060008060008661ffff1667ffffffffffffffff8111156118e6576118e6613358565b6040519080825280601f01601f191660200182016040528015611910576020820181803683370190505b5090506000808751602089018b8e8ef191503d925086831115611931578692505b828152826000602083013e90999098509650505050505050565b60008082136119b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610550565b600060606119c384611df2565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c18213611bc057506000919050565b680755bf798b4a1bf1e58212611c32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4558505f4f564552464c4f5700000000000000000000000000000000000000006044820152606401610550565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b600080611dda86611ec8565b9050611de881868686611efa565b9695505050505050565b6000808211611e5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610550565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b60608180519060200120604051602001611ee491815260200190565b6040516020818303038152906040529050919050565b6000806000611f0a878686611f37565b91509150818015611f2c57508051602080830191909120875191880191909120145b979650505050505050565b600060606000611f468561202c565b90506000806000611f58848a89612127565b81519295509093509150158080611f6c5750815b611fd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f50726f76696465642070726f6f6620697320696e76616c69642e0000000000006044820152606401610550565b600081611fee576040518060200160405280600081525061201a565b61201a86611ffd6001886136f1565b8151811061200d5761200d613b82565b6020026020010151612643565b919b919a509098505050505050505050565b606060006120398361266d565b90506000815167ffffffffffffffff81111561205757612057613358565b60405190808252806020026020018201604052801561209c57816020015b60408051808201909152606080825260208201528152602001906001900390816120755790505b50905060005b825181101561211f5760006120cf8483815181106120c2576120c2613b82565b60200260200101516126a0565b905060405180604001604052808281526020016120eb8361266d565b81525083838151811061210057612100613b82565b602002602001018190525050808061211790613af2565b9150506120a2565b509392505050565b600060608180806121378761274a565b9050600086905060008061215e604051806040016040528060608152602001606081525090565b60005b8c518110156125ff578c818151811061217c5761217c613b82565b6020026020010151915082846121929190613a74565b935061219f600188613a74565b96508361221d57815180516020909101208514612218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496e76616c696420726f6f7420686173680000000000000000000000000000006044820152606401610550565b61230d565b81515160201161229957815180516020909101208514612218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496e76616c6964206c6172676520696e7465726e616c206861736800000000006044820152606401610550565b815185906122a690613bb1565b1461230d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e76616c696420696e7465726e616c206e6f646520686173680000000000006044820152606401610550565b61231960106001613a74565b8260200151511415612392578551841415612333576125ff565b600086858151811061234757612347613b82565b602001015160f81c60f81b60f81c9050600083602001518260ff168151811061237257612372613b82565b60200260200101519050612385816128cd565b96506001945050506125ed565b6002826020015151141561258b5760006123ab83612903565b90506000816000815181106123c2576123c2613b82565b016020015160f81c905060006123d9600283613bf6565b6123e4906002613c18565b905060006123f5848360ff16612927565b905060006124038b8a612927565b90506000612411838361295d565b905060ff851660021480612428575060ff85166003145b1561247e5780835114801561243d5750808251145b1561244f5761244c818b613a74565b99505b507f800000000000000000000000000000000000000000000000000000000000000099506125ff945050505050565b60ff85161580612491575060ff85166001145b1561250357825181146124cd57507f800000000000000000000000000000000000000000000000000000000000000099506125ff945050505050565b6124f488602001516001815181106124e7576124e7613b82565b60200260200101516128cd565b9a5097506125ed945050505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f52656365697665642061206e6f6465207769746820616e20756e6b6e6f776e2060448201527f70726566697800000000000000000000000000000000000000000000000000006064820152608401610550565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f526563656976656420616e20756e706172736561626c65206e6f64652e0000006044820152606401610550565b806125f781613af2565b915050612161565b507f800000000000000000000000000000000000000000000000000000000000000084148661262e8786612927565b909e909d50909b509950505050505050505050565b6020810151805160609161146a9161265d906001906136f1565b815181106120c2576120c2613b82565b60408051808201825260008082526020918201528151808301909252825182528083019082015260609061146a90612a09565b606060008060006126b085612c3c565b9194509250905060008160018111156126cb576126cb613c3b565b14612732576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e00000000000000006044820152606401610550565b61274185602001518484613043565b95945050505050565b606060008251600261275c9190613943565b67ffffffffffffffff81111561277457612774613358565b6040519080825280601f01601f19166020018201604052801561279e576020820181803683370190505b50905060005b83518110156128c65760048482815181106127c1576127c1613b82565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c826127f6836002613943565b8151811061280657612806613b82565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350601084828151811061284957612849613b82565b016020015161285b919060f81c613bf6565b60f81b8261286a836002613943565b612875906001613a74565b8151811061288557612885613b82565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806128be81613af2565b9150506127a4565b5092915050565b600060606020836000015110156128ee576128e783613122565b90506128fa565b6128f7836126a0565b90505b6118b981613bb1565b606061146a61292283602001516000815181106120c2576120c2613b82565b61274a565b606082518210612946575060408051602081019091526000815261146a565b611467838384865161295891906136f1565b61312d565b6000805b8084511180156129715750808351115b80156129f2575082818151811061298a5761298a613b82565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168482815181106129c9576129c9613b82565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b156114675780612a0181613af2565b915050612961565b6060600080612a1784612c3c565b91935090915060019050816001811115612a3357612a33613c3b565b14612a9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e0000000000000000006044820152606401610550565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081612ab35790505090506000835b8651811015612c315760208210612b79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201527f7374206c656e6774682e000000000000000000000000000000000000000000006064820152608401610550565b600080612bb66040518060400160405280858c60000151612b9a91906136f1565b8152602001858c60200151612baf9190613a74565b9052612c3c565b509150915060405180604001604052808383612bd29190613a74565b8152602001848b60200151612be79190613a74565b815250858581518110612bfc57612bfc613b82565b6020908102919091010152612c12600185613a74565b9350612c1e8183613a74565b612c289084613a74565b92505050612ae0565b508152949350505050565b600080600080846000015111612cae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e00000000000000006044820152606401610550565b6020840151805160001a607f8111612cd357600060016000945094509450505061303c565b60b78111612d69576000612ce86080836136f1565b905080876000015111612d57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e000000000000006044820152606401610550565b6001955093506000925061303c915050565b60bf8111612e8c576000612d7e60b7836136f1565b905080876000015111612ded576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e006044820152606401610550565b600183015160208290036101000a9004612e078183613a74565b885111612e70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e00000000000000006044820152606401610550565b612e7b826001613a74565b965094506000935061303c92505050565b60f78111612f21576000612ea160c0836136f1565b905080876000015111612f10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e0000000000000000006044820152606401610550565b60019550935084925061303c915050565b6000612f2e60f7836136f1565b905080876000015111612f9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e0000006044820152606401610550565b600183015160208290036101000a9004612fb78183613a74565b885111613020576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496e76616c696420524c50206c6f6e67206c6973742e000000000000000000006044820152606401610550565b61302b826001613a74565b965094506001935061303c92505050565b9193909250565b606060008267ffffffffffffffff81111561306057613060613358565b6040519080825280601f01601f19166020018201604052801561308a576020820181803683370190505b50905080516000141561309e5790506118b9565b60006130aa8587613a74565b90506020820160005b6130be6020876139e4565b8110156130f557825182526130d4602084613a74565b92506130e1602083613a74565b9150806130ed81613af2565b9150506130b3565b5060006001602087066020036101000a039050808251168119845116178252839450505050509392505050565b606061146a82613305565b60608182601f01101561319c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610550565b828284011015613208576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610550565b81830184511015613275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610550565b60608215801561329457604051915060008252602082016040526132fc565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156132cd5780518352602092830192016132b5565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b606061146a826020015160008460000151613043565b60006020828403121561332d57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461167457600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156133ce576133ce613358565b604052919050565b600080600080600060a086880312156133ee57600080fd5b6133f786613334565b94506020808701359450604087013567ffffffffffffffff808216821461341d57600080fd5b909450606088013590811515821461343457600080fd5b9093506080880135908082111561344a57600080fd5b818901915089601f83011261345e57600080fd5b81358181111561347057613470613358565b6134a0847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613387565b91508082528a848285010111156134b657600080fd5b80848401858401376000848284010152508093505050509295509295909350565b60008083601f8401126134e957600080fd5b50813567ffffffffffffffff81111561350157600080fd5b60208301915083602082850101111561351957600080fd5b9250929050565b60008060008060008060008060008060006101808c8e03121561354257600080fd5b8b359a5061355260208d01613334565b995061356060408d01613334565b985060608c0135975060808c0135965067ffffffffffffffff60a08d0135111561358957600080fd5b6135998d60a08e01358e016134d7565b909650945060c08c0135935060808c8e037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff200112156135d757600080fd5b60e08c01925067ffffffffffffffff6101608d013511156135f757600080fd5b6136088d6101608e01358e016134d7565b81935080925050509295989b509295989b9093969950565b6000815180845260005b818110156136465760208185018101518683018201520161362a565b81811115613658576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b85815284602082015267ffffffffffffffff84166040820152821515606082015260a060808201526000611f2c60a0830184613620565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015613703576137036136c2565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261374657613746613708565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f80000000000000000000000000000000000000000000000000000000000000008314161561379a5761379a6136c2565b500590565b6000808312837f8000000000000000000000000000000000000000000000000000000000000000018312811516156137d9576137d96136c2565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01831381161561380d5761380d6136c2565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600084136000841385830485118282161615613854576138546136c2565b7f8000000000000000000000000000000000000000000000000000000000000000600087128682058812818416161561388f5761388f6136c2565b600087129250878205871284841616156138ab576138ab6136c2565b878505871281841616156138c1576138c16136c2565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03841381151615613909576139096136c2565b827f800000000000000000000000000000000000000000000000000000000000000003841281161561393d5761393d6136c2565b50500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561397b5761397b6136c2565b500290565b600067ffffffffffffffff8083168185168083038211156139a3576139a36136c2565b01949350505050565b60006fffffffffffffffffffffffffffffffff808316818516818304811182151516156139db576139db6136c2565b02949350505050565b6000826139f3576139f3613708565b500490565b600060408284031215613a0a57600080fd5b6040516040810181811067ffffffffffffffff82111715613a2d57613a2d613358565b604052825181526020928301519281019290925250919050565b600060208284031215613a5957600080fd5b5051919050565b600082613a6f57613a6f613708565b500690565b60008219821115613a8757613a876136c2565b500190565b600060808284031215613a9e57600080fd5b6040516080810181811067ffffffffffffffff82111715613ac157613ac1613358565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613b2457613b246136c2565b5060010190565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a0830152613b7660c0830184613620565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80516020808301519190811015613bf0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8160200360031b1b821691505b50919050565b600060ff831680613c0957613c09613708565b8060ff84160691505092915050565b600060ff821660ff841680821015613c3257613c326136c2565b90039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080a000a496e697469616c697a61626c653a20636f6e747261637420697320616c726561",
Bin: "0x6101206040523480156200001257600080fd5b50604051620041cd380380620041cd8339810160408190526200003591620002bc565b6000608081905260a052600160c0526001600160a01b0382166101005260e08190526200006162000069565b5050620002f8565b6000620000776001620000f8565b9050801562000090576000805461ff0019166101001790555b603380546001600160a01b03191661dead179055620000ae6200020a565b8015620000f5576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60008054610100900460ff161562000191578160ff1660011480156200013157506200012f30620002ad60201b620014391760201c565b155b620001895760405162461bcd60e51b815260206004820152602e6024820152600080516020620041ad83398151915260448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b506000919050565b60005460ff808416911610620001f05760405162461bcd60e51b815260206004820152602e6024820152600080516020620041ad83398151915260448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000180565b506000805460ff191660ff92909216919091179055600190565b600054610100900460ff16620002775760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840162000180565b60408051606081018252633b9aca0080825260006020830152436001600160401b031691909201819052600160c01b0217600155565b6001600160a01b03163b151590565b60008060408385031215620002d057600080fd5b82516001600160a01b0381168114620002e857600080fd5b6020939093015192949293505050565b60805160a05160c05160e05161010051613e3f6200036e6000396000818161016a0152818161099101528181610a0801528181610a9b01528181610b6d0152610ec301526000818161044c01528181610c1f0152610f460152600061023b01526000610327015260006104800152613e3f6000f3fe60806040526004361061012c5760003560e01c8063a14238e7116100a5578063cff0ab9611610074578063eecf1c3611610059578063eecf1c3614610427578063f4daa2911461043a578063f786becd1461046e57600080fd5b8063cff0ab9614610373578063e9e05c421461041457600080fd5b8063a14238e7146102e5578063c8b9153114610315578063ca3e99ba14610349578063cd7c97891461035e57600080fd5b80636bf2606a116100fc5780638129fc1c116100e15780638129fc1c1461028d578063867ead13146102a25780639bf62d82146102b857600080fd5b80636bf2606a146102295780636dbffb781461025d57600080fd5b80621c2ff61461015857806313620abd146101b657806364b79208146101ef5780636bb0291e1461021457600080fd5b36610153576101513334620186a06000604051806020016040528060008152506104a2565b005b600080fd5b34801561016457600080fd5b5061018c7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101c257600080fd5b506101ce633b9aca0081565b6040516fffffffffffffffffffffffffffffffff90911681526020016101ad565b3480156101fb57600080fd5b50610206627a120081565b6040519081526020016101ad565b34801561022057600080fd5b50610206600481565b34801561023557600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b34801561026957600080fd5b5061027d6102783660046134e3565b610948565b60405190151581526020016101ad565b34801561029957600080fd5b50610151610c56565b3480156102ae57600080fd5b5061020661271081565b3480156102c457600080fd5b5060335461018c9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102f157600080fd5b5061027d6103003660046134e3565b60346020526000908152604090205460ff1681565b34801561032157600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b34801561035557600080fd5b50610206610d31565b34801561036a57600080fd5b50610206600881565b34801561037f57600080fd5b506001546103db906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff92831660208501529116908201526060016101ad565b61015161042236600461359e565b6104a2565b6101516104353660046136e8565b610d42565b34801561044657600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b34801561047a57600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b8260005a905083156105595773ffffffffffffffffffffffffffffffffffffffff87161561055957604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f4f7074696d69736d506f7274616c3a206d7573742073656e6420746f2061646460448201527f72657373283029207768656e206372656174696e67206120636f6e747261637460648201526084015b60405180910390fd5b3332811461057a575033731111000000000000000000000000000000001111015b8773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f78231ae6eb73366f912bb1d64351601fb76344c537bbab635ce14d0f376f0195348a8a8a8a6040516105df959493929190613853565b60405180910390a35060015460009061061e907801000000000000000000000000000000000000000000000000900467ffffffffffffffff16436138b9565b905080156107a75760006106366004627a12006138ff565b6001546106619190700100000000000000000000000000000000900467ffffffffffffffff16613967565b9050600060086106756004627a12006138ff565b6001546106959085906fffffffffffffffffffffffffffffffff166139db565b61069f91906138ff565b6106a991906138ff565b6001549091506000906106f5906106df906106d79085906fffffffffffffffffffffffffffffffff16613a97565b612710611455565b6fffffffffffffffffffffffffffffffff611470565b90506001841115610768576107656106df670de0b6b3a764000061075161071d6008836138ff565b61072f90670de0b6b3a7640000613967565b61073a60018a6138b9565b61074c90670de0b6b3a7640000613b0b565b61147f565b61075b90856139db565b6106d791906138ff565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b600180548491906010906107da908490700100000000000000000000000000000000900467ffffffffffffffff16613b48565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550627a1200600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1613156108b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f7260448201527f6520676173207468616e20617661696c61626c6520676173206c696d697400006064820152608401610550565b6001546000906108e2906fffffffffffffffffffffffffffffffff1667ffffffffffffffff8616613b74565b6fffffffffffffffffffffffffffffffff169050600061090648633b9aca006114b0565b6109109083613bac565b905060005a61091f90866138b9565b90508082111561093b5761093b61093682846138b9565b6114c0565b5050505050505050505050565b6040517fa25ae55700000000000000000000000000000000000000000000000000000000815260048101829052600090819073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063a25ae557906024016040805180830381865afa1580156109d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fb9190613bc0565b8051909150610c1d5760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663529933df6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a959190613c0f565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634ab65d736040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b289190613c0f565b905084811115610b3d57506000949350505050565b600082610b4a83886138b9565b610b549190613c28565b905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663a25ae557610b9c83866138b9565b610ba69089613c3c565b6040518263ffffffff1660e01b8152600401610bc491815260200190565b6040805180830381865afa158015610be0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c049190613bc0565b8051909450610c195750600095945050505050565b5050505b7f00000000000000000000000000000000000000000000000000000000000000008160200151610c4d9190613c3c565b42119392505050565b6000610c6260016114ee565b90508015610c9757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055610ccb611679565b8015610d2e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b610d3f6004627a12006138ff565b81565b60335473ffffffffffffffffffffffffffffffffffffffff1661dead14610deb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a2063616e206f6e6c79207472696767657260448201527f206f6e65207769746864726177616c20706572207472616e73616374696f6e006064820152608401610550565b73ffffffffffffffffffffffffffffffffffffffff8916301415610e91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a20796f752063616e6e6f742073656e642060448201527f6d6573736167657320746f2074686520706f7274616c20636f6e7472616374006064820152608401610550565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018590526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a25ae557906024016040805180830381865afa158015610f1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f429190613bc0565b90507f00000000000000000000000000000000000000000000000000000000000000008160200151610f749190613c3c565b4211611002576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4f7074696d69736d506f7274616c3a2070726f706f73616c206973206e6f742060448201527f7965742066696e616c697a6564000000000000000000000000000000000000006064820152608401610550565b61101961101436869003860186613c54565b61175c565b8151146110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f7074696d69736d506f7274616c3a20696e76616c6964206f7574707574207260448201527f6f6f742070726f6f6600000000000000000000000000000000000000000000006064820152608401610550565b60006110ee8d8d8d8d8d8d8d8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506117b892505050565b905061113581866040013586868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506117f792505050565b6111c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a20696e76616c696420776974686472617760448201527f616c20696e636c7573696f6e2070726f6f6600000000000000000000000000006064820152608401610550565b60008181526034602052604090205460ff1615611260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206160448201527f6c7265616479206265656e2066696e616c697a656400000000000000000000006064820152608401610550565b600081815260346020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556112a3614e208a613c3c565b5a1015611332576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4f7074696d69736d506f7274616c3a20696e73756666696369656e742067617360448201527f20746f2066696e616c697a65207769746864726177616c0000000000000000006064820152608401610550565b603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8e16179055604080516020601f8a018190048102820181019092528881526000916113bb918e918d918f918691908f908f90819084018382808284376000920191909152506118c092505050565b50603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405190915082907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b9061142190841515815260200190565b60405180910390a25050505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b6000818312156114655781611467565b825b90505b92915050565b60008183126114655781611467565b6000611467670de0b6b3a7640000836114978661194b565b6114a191906139db565b6114ab91906138ff565b611b8f565b6000818310156114655781611467565b6000805a90505b825a6114d390836138b9565b10156114e9576114e282613cba565b91506114c7565b505050565b60008054610100900460ff16156115a5578160ff1660011480156115115750303b155b61159d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610550565b506000919050565b60005460ff80841691161061163c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610550565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600054610100900460ff16611710576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610550565b60408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6000816000015182602001518360400151846060015160405160200161179b949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b60008686868686866040516020016117d596959493929190613cf3565b6040516020818303038152906040528051906020012090509695505050505050565b604080516020810185905260009181018290528190606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830181905292506118b59101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152600182527f01000000000000000000000000000000000000000000000000000000000000006020830152908587611dce565b9150505b9392505050565b6000606060008060008661ffff1667ffffffffffffffff8111156118e6576118e6613520565b6040519080825280601f01601f191660200182016040528015611910576020820181803683370190505b5090506000808751602089018b8e8ef191503d925086831115611931578692505b828152826000602083013e90999098509650505050505050565b60008082136119b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610550565b600060606119c384611df2565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c18213611bc057506000919050565b680755bf798b4a1bf1e58212611c32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4558505f4f564552464c4f5700000000000000000000000000000000000000006044820152606401610550565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b600080611dda86611ec8565b9050611de881868686611efa565b9695505050505050565b6000808211611e5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610550565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b60608180519060200120604051602001611ee491815260200190565b6040516020818303038152906040529050919050565b6000806000611f0a878686611f37565b91509150818015611f2c57508051602080830191909120875191880191909120145b979650505050505050565b600060606000611f4685612052565b90506000806000611f58848a8961214d565b81519295509093509150158080611f6c5750815b611ff8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4d65726b6c65547269653a2070726f76696465642070726f6f6620697320696e60448201527f76616c69640000000000000000000000000000000000000000000000000000006064820152608401610550565b6000816120145760405180602001604052806000815250612040565b612040866120236001886138b9565b8151811061203357612033613d4a565b60200260200101516126db565b919b919a509098505050505050505050565b6060600061205f83612705565b90506000815167ffffffffffffffff81111561207d5761207d613520565b6040519080825280602002602001820160405280156120c257816020015b604080518082019091526060808252602082015281526020019060019003908161209b5790505b50905060005b82518110156121455760006120f58483815181106120e8576120e8613d4a565b6020026020010151612738565b9050604051806040016040528082815260200161211183612705565b81525083838151811061212657612126613d4a565b602002602001018190525050808061213d90613cba565b9150506120c8565b509392505050565b6000606081808061215d87612808565b90506000869050600080612184604051806040016040528060608152602001606081525090565b60005b8c51811015612697578c81815181106121a2576121a2613d4a565b6020026020010151915082846121b89190613c3c565b93506121c5600188613c3c565b9650836122435781518051602090910120851461223e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f7420686173680000006044820152606401610550565b61237f565b8151516020116122e55781518051602090910120851461223e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e60448201527f616c2068617368000000000000000000000000000000000000000000000000006064820152608401610550565b815185906122f290613d79565b1461237f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f6460448201527f65206861736800000000000000000000000000000000000000000000000000006064820152608401610550565b61238b60106001613c3c565b82602001515114156124045785518414156123a557612697565b60008685815181106123b9576123b9613d4a565b602001015160f81c60f81b60f81c9050600083602001518260ff16815181106123e4576123e4613d4a565b602002602001015190506123f78161298b565b9650600194505050612685565b600282602001515114156125fd57600061241d836129c1565b905060008160008151811061243457612434613d4a565b016020015160f81c9050600061244b600283613dbe565b612456906002613de0565b90506000612467848360ff166129e5565b905060006124758b8a6129e5565b905060006124838383612a1b565b905060ff85166002148061249a575060ff85166003145b156124f0578083511480156124af5750808251145b156124c1576124be818b613c3c565b99505b507f80000000000000000000000000000000000000000000000000000000000000009950612697945050505050565b60ff85161580612503575060ff85166001145b15612575578251811461253f57507f80000000000000000000000000000000000000000000000000000000000000009950612697945050505050565b612566886020015160018151811061255957612559613d4a565b602002602001015161298b565b9a509750612685945050505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f6465207769746860448201527f20616e20756e6b6e6f776e2070726566697800000000000000000000000000006064820152608401610550565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e70617273656160448201527f626c65206e6f64650000000000000000000000000000000000000000000000006064820152608401610550565b8061268f81613cba565b915050612187565b507f80000000000000000000000000000000000000000000000000000000000000008414866126c687866129e5565b909e909d50909b509950505050505050505050565b6020810151805160609161146a916126f5906001906138b9565b815181106120e8576120e8613d4a565b60408051808201825260008082526020918201528151808301909252825182528083019082015260609061146a90612ac7565b6060600080600061274885612d20565b91945092509050600081600181111561276357612763613e03565b146127f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f524c505265616465723a20696e76616c696420524c502062797465732076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610550565b6127ff8560200151848461320b565b95945050505050565b606060008251600261281a9190613b0b565b67ffffffffffffffff81111561283257612832613520565b6040519080825280601f01601f19166020018201604052801561285c576020820181803683370190505b50905060005b835181101561298457600484828151811061287f5761287f613d4a565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c826128b4836002613b0b565b815181106128c4576128c4613d4a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350601084828151811061290757612907613d4a565b0160200151612919919060f81c613dbe565b60f81b82612928836002613b0b565b612933906001613c3c565b8151811061294357612943613d4a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508061297c81613cba565b915050612862565b5092915050565b600060606020836000015110156129ac576129a5836132ea565b90506129b8565b6129b583612738565b90505b6118b981613d79565b606061146a6129e083602001516000815181106120e8576120e8613d4a565b612808565b606082518210612a04575060408051602081019091526000815261146a565b6114678383848651612a1691906138b9565b6132f5565b6000805b808451118015612a2f5750808351115b8015612ab05750828181518110612a4857612a48613d4a565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916848281518110612a8757612a87613d4a565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b156114675780612abf81613cba565b915050612a1f565b6060600080612ad584612d20565b91935090915060019050816001811115612af157612af1613e03565b14612b7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f524c505265616465723a20696e76616c696420524c50206c6973742076616c7560448201527f65000000000000000000000000000000000000000000000000000000000000006064820152608401610550565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081612b975790505090506000835b8651811015612d155760208210612c5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f524c505265616465723a2070726f766964656420524c50206c6973742065786360448201527f65656473206d6178206c697374206c656e6774680000000000000000000000006064820152608401610550565b600080612c9a6040518060400160405280858c60000151612c7e91906138b9565b8152602001858c60200151612c939190613c3c565b9052612d20565b509150915060405180604001604052808383612cb69190613c3c565b8152602001848b60200151612ccb9190613c3c565b815250858581518110612ce057612ce0613d4a565b6020908102919091010152612cf6600185613c3c565b9350612d028183613c3c565b612d0c9084613c3c565b92505050612bc4565b508152949350505050565b600080600080846000015111612db8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f524c505265616465723a20524c50206974656d2063616e6e6f74206265206e7560448201527f6c6c0000000000000000000000000000000000000000000000000000000000006064820152608401610550565b6020840151805160001a607f8111612ddd576000600160009450945094505050613204565b60b78111612e99576000612df26080836138b9565b905080876000015111612e87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f524c505265616465723a20696e76616c696420524c502073686f72742073747260448201527f696e6700000000000000000000000000000000000000000000000000000000006064820152608401610550565b60019550935060009250613204915050565b60bf8111613008576000612eae60b7836138b9565b905080876000015111612f43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f524c505265616465723a20696e76616c696420524c50206c6f6e67207374726960448201527f6e67206c656e67746800000000000000000000000000000000000000000000006064820152608401610550565b600183015160208290036101000a9004612f5d8183613c3c565b885111612fec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f524c505265616465723a20696e76616c696420524c50206c6f6e67207374726960448201527f6e670000000000000000000000000000000000000000000000000000000000006064820152608401610550565b612ff7826001613c3c565b965094506000935061320492505050565b60f781116130c357600061301d60c0836138b9565b9050808760000151116130b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f524c505265616465723a20696e76616c696420524c502073686f7274206c697360448201527f74000000000000000000000000000000000000000000000000000000000000006064820152608401610550565b600195509350849250613204915050565b60006130d060f7836138b9565b905080876000015111613165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f524c505265616465723a20696e76616c696420524c50206c6f6e67206c69737460448201527f206c656e677468000000000000000000000000000000000000000000000000006064820152608401610550565b600183015160208290036101000a900461317f8183613c3c565b8851116131e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f524c505265616465723a20696e76616c696420524c50206c6f6e67206c6973746044820152606401610550565b6131f3826001613c3c565b965094506001935061320492505050565b9193909250565b606060008267ffffffffffffffff81111561322857613228613520565b6040519080825280601f01601f191660200182016040528015613252576020820181803683370190505b5090508051600014156132665790506118b9565b60006132728587613c3c565b90506020820160005b613286602087613bac565b8110156132bd578251825261329c602084613c3c565b92506132a9602083613c3c565b9150806132b581613cba565b91505061327b565b5060006001602087066020036101000a039050808251168119845116178252839450505050509392505050565b606061146a826134cd565b60608182601f011015613364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610550565b8282840110156133d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610550565b8183018451101561343d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610550565b60608215801561345c57604051915060008252602082016040526134c4565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561349557805183526020928301920161347d565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b606061146a82602001516000846000015161320b565b6000602082840312156134f557600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461167457600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561359657613596613520565b604052919050565b600080600080600060a086880312156135b657600080fd5b6135bf866134fc565b94506020808701359450604087013567ffffffffffffffff80821682146135e557600080fd5b90945060608801359081151582146135fc57600080fd5b9093506080880135908082111561361257600080fd5b818901915089601f83011261362657600080fd5b81358181111561363857613638613520565b613668847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161354f565b91508082528a8482850101111561367e57600080fd5b80848401858401376000848284010152508093505050509295509295909350565b60008083601f8401126136b157600080fd5b50813567ffffffffffffffff8111156136c957600080fd5b6020830191508360208285010111156136e157600080fd5b9250929050565b60008060008060008060008060008060006101808c8e03121561370a57600080fd5b8b359a5061371a60208d016134fc565b995061372860408d016134fc565b985060608c0135975060808c0135965067ffffffffffffffff60a08d0135111561375157600080fd5b6137618d60a08e01358e0161369f565b909650945060c08c0135935060808c8e037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561379f57600080fd5b60e08c01925067ffffffffffffffff6101608d013511156137bf57600080fd5b6137d08d6101608e01358e0161369f565b81935080925050509295989b509295989b9093969950565b6000815180845260005b8181101561380e576020818501810151868301820152016137f2565b81811115613820576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b85815284602082015267ffffffffffffffff84166040820152821515606082015260a060808201526000611f2c60a08301846137e8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156138cb576138cb61388a565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261390e5761390e6138d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f8000000000000000000000000000000000000000000000000000000000000000831416156139625761396261388a565b500590565b6000808312837f8000000000000000000000000000000000000000000000000000000000000000018312811516156139a1576139a161388a565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0183138116156139d5576139d561388a565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600084136000841385830485118282161615613a1c57613a1c61388a565b7f80000000000000000000000000000000000000000000000000000000000000006000871286820588128184161615613a5757613a5761388a565b60008712925087820587128484161615613a7357613a7361388a565b87850587128184161615613a8957613a8961388a565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03841381151615613ad157613ad161388a565b827f8000000000000000000000000000000000000000000000000000000000000000038412811615613b0557613b0561388a565b50500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b4357613b4361388a565b500290565b600067ffffffffffffffff808316818516808303821115613b6b57613b6b61388a565b01949350505050565b60006fffffffffffffffffffffffffffffffff80831681851681830481118215151615613ba357613ba361388a565b02949350505050565b600082613bbb57613bbb6138d0565b500490565b600060408284031215613bd257600080fd5b6040516040810181811067ffffffffffffffff82111715613bf557613bf5613520565b604052825181526020928301519281019290925250919050565b600060208284031215613c2157600080fd5b5051919050565b600082613c3757613c376138d0565b500690565b60008219821115613c4f57613c4f61388a565b500190565b600060808284031215613c6657600080fd5b6040516080810181811067ffffffffffffffff82111715613c8957613c89613520565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613cec57613cec61388a565b5060010190565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a0830152613d3e60c08301846137e8565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80516020808301519190811015613db8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8160200360031b1b821691505b50919050565b600060ff831680613dd157613dd16138d0565b8060ff84160691505092915050565b600060ff821660ff841680821015613dfa57613dfa61388a565b90039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080a000a496e697469616c697a61626c653a20636f6e747261637420697320616c726561",
}
// OptimismPortalABI is the input ABI used to generate the binding from.
......
......@@ -2,4 +2,4 @@
// This file is a generated binding and any manual changes will be lost.
package bindings
var OptimismPortalDeployedBin = "0x60806040526004361061012c5760003560e01c8063a14238e7116100a5578063cff0ab9611610074578063eecf1c3611610059578063eecf1c3614610427578063f4daa2911461043a578063f786becd1461046e57600080fd5b8063cff0ab9614610373578063e9e05c421461041457600080fd5b8063a14238e7146102e5578063c8b9153114610315578063ca3e99ba14610349578063cd7c97891461035e57600080fd5b80636bf2606a116100fc5780638129fc1c116100e15780638129fc1c1461028d578063867ead13146102a25780639bf62d82146102b857600080fd5b80636bf2606a146102295780636dbffb781461025d57600080fd5b80621c2ff61461015857806313620abd146101b657806364b79208146101ef5780636bb0291e1461021457600080fd5b36610153576101513334620186a06000604051806020016040528060008152506104a2565b005b600080fd5b34801561016457600080fd5b5061018c7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101c257600080fd5b506101ce633b9aca0081565b6040516fffffffffffffffffffffffffffffffff90911681526020016101ad565b3480156101fb57600080fd5b50610206627a120081565b6040519081526020016101ad565b34801561022057600080fd5b50610206600481565b34801561023557600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b34801561026957600080fd5b5061027d61027836600461331b565b610948565b60405190151581526020016101ad565b34801561029957600080fd5b50610151610c56565b3480156102ae57600080fd5b5061020661271081565b3480156102c457600080fd5b5060335461018c9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102f157600080fd5b5061027d61030036600461331b565b60346020526000908152604090205460ff1681565b34801561032157600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b34801561035557600080fd5b50610206610d31565b34801561036a57600080fd5b50610206600881565b34801561037f57600080fd5b506001546103db906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff92831660208501529116908201526060016101ad565b6101516104223660046133d6565b6104a2565b610151610435366004613520565b610d42565b34801561044657600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b34801561047a57600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b8260005a905083156105595773ffffffffffffffffffffffffffffffffffffffff87161561055957604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f4f7074696d69736d506f7274616c3a206d7573742073656e6420746f2061646460448201527f72657373283029207768656e206372656174696e67206120636f6e747261637460648201526084015b60405180910390fd5b3332811461057a575033731111000000000000000000000000000000001111015b8773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f78231ae6eb73366f912bb1d64351601fb76344c537bbab635ce14d0f376f0195348a8a8a8a6040516105df95949392919061368b565b60405180910390a35060015460009061061e907801000000000000000000000000000000000000000000000000900467ffffffffffffffff16436136f1565b905080156107a75760006106366004627a1200613737565b6001546106619190700100000000000000000000000000000000900467ffffffffffffffff1661379f565b9050600060086106756004627a1200613737565b6001546106959085906fffffffffffffffffffffffffffffffff16613813565b61069f9190613737565b6106a99190613737565b6001549091506000906106f5906106df906106d79085906fffffffffffffffffffffffffffffffff166138cf565b612710611455565b6fffffffffffffffffffffffffffffffff611470565b90506001841115610768576107656106df670de0b6b3a764000061075161071d600883613737565b61072f90670de0b6b3a764000061379f565b61073a60018a6136f1565b61074c90670de0b6b3a7640000613943565b61147f565b61075b9085613813565b6106d79190613737565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b600180548491906010906107da908490700100000000000000000000000000000000900467ffffffffffffffff16613980565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550627a1200600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1613156108b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603c60248201527f4f7074696d69736d506f7274616c3a2063616e6e6f7420627579206d6f72652060448201527f676173207468616e20617661696c61626c6520676173206c696d6974000000006064820152608401610550565b6001546000906108e2906fffffffffffffffffffffffffffffffff1667ffffffffffffffff86166139ac565b6fffffffffffffffffffffffffffffffff169050600061090648633b9aca006114b0565b61091090836139e4565b905060005a61091f90866136f1565b90508082111561093b5761093b61093682846136f1565b6114c0565b5050505050505050505050565b6040517fa25ae55700000000000000000000000000000000000000000000000000000000815260048101829052600090819073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063a25ae557906024016040805180830381865afa1580156109d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fb91906139f8565b8051909150610c1d5760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663529933df6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a959190613a47565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634ab65d736040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b289190613a47565b905084811115610b3d57506000949350505050565b600082610b4a83886136f1565b610b549190613a60565b905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663a25ae557610b9c83866136f1565b610ba69089613a74565b6040518263ffffffff1660e01b8152600401610bc491815260200190565b6040805180830381865afa158015610be0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0491906139f8565b8051909450610c195750600095945050505050565b5050505b7f00000000000000000000000000000000000000000000000000000000000000008160200151610c4d9190613a74565b42119392505050565b6000610c6260016114ee565b90508015610c9757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055610ccb611679565b8015610d2e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b610d3f6004627a1200613737565b81565b60335473ffffffffffffffffffffffffffffffffffffffff1661dead14610deb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a2063616e206f6e6c79207472696767657260448201527f206f6e65207769746864726177616c20706572207472616e73616374696f6e006064820152608401610550565b73ffffffffffffffffffffffffffffffffffffffff8916301415610e91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a20796f752063616e6e6f742073656e642060448201527f6d6573736167657320746f2074686520706f7274616c20636f6e7472616374006064820152608401610550565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018590526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a25ae557906024016040805180830381865afa158015610f1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4291906139f8565b90507f00000000000000000000000000000000000000000000000000000000000000008160200151610f749190613a74565b4211611002576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4f7074696d69736d506f7274616c3a2070726f706f73616c206973206e6f742060448201527f7965742066696e616c697a6564000000000000000000000000000000000000006064820152608401610550565b61101961101436869003860186613a8c565b61175c565b8151146110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f7074696d69736d506f7274616c3a20696e76616c6964206f7574707574207260448201527f6f6f742070726f6f6600000000000000000000000000000000000000000000006064820152608401610550565b60006110ee8d8d8d8d8d8d8d8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506117b892505050565b905061113581866040013586868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506117f792505050565b6111c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a20696e76616c696420776974686472617760448201527f616c20696e636c7573696f6e2070726f6f6600000000000000000000000000006064820152608401610550565b60008181526034602052604090205460ff1615611260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206160448201527f6c7265616479206265656e2066696e616c697a656400000000000000000000006064820152608401610550565b600081815260346020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556112a3614e208a613a74565b5a1015611332576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4f7074696d69736d506f7274616c3a20696e73756666696369656e742067617360448201527f20746f2066696e616c697a65207769746864726177616c0000000000000000006064820152608401610550565b603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8e16179055604080516020601f8a018190048102820181019092528881526000916113bb918e918d918f918691908f908f90819084018382808284376000920191909152506118c092505050565b50603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405190915082907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b9061142190841515815260200190565b60405180910390a25050505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b6000818312156114655781611467565b825b90505b92915050565b60008183126114655781611467565b6000611467670de0b6b3a7640000836114978661194b565b6114a19190613813565b6114ab9190613737565b611b8f565b6000818310156114655781611467565b6000805a90505b825a6114d390836136f1565b10156114e9576114e282613af2565b91506114c7565b505050565b60008054610100900460ff16156115a5578160ff1660011480156115115750303b155b61159d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610550565b506000919050565b60005460ff80841691161061163c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610550565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600054610100900460ff16611710576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610550565b60408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6000816000015182602001518360400151846060015160405160200161179b949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b60008686868686866040516020016117d596959493929190613b2b565b6040516020818303038152906040528051906020012090509695505050505050565b604080516020810185905260009181018290528190606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830181905292506118b59101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152600182527f01000000000000000000000000000000000000000000000000000000000000006020830152908587611dce565b9150505b9392505050565b6000606060008060008661ffff1667ffffffffffffffff8111156118e6576118e6613358565b6040519080825280601f01601f191660200182016040528015611910576020820181803683370190505b5090506000808751602089018b8e8ef191503d925086831115611931578692505b828152826000602083013e90999098509650505050505050565b60008082136119b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610550565b600060606119c384611df2565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c18213611bc057506000919050565b680755bf798b4a1bf1e58212611c32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4558505f4f564552464c4f5700000000000000000000000000000000000000006044820152606401610550565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b600080611dda86611ec8565b9050611de881868686611efa565b9695505050505050565b6000808211611e5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610550565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b60608180519060200120604051602001611ee491815260200190565b6040516020818303038152906040529050919050565b6000806000611f0a878686611f37565b91509150818015611f2c57508051602080830191909120875191880191909120145b979650505050505050565b600060606000611f468561202c565b90506000806000611f58848a89612127565b81519295509093509150158080611f6c5750815b611fd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f50726f76696465642070726f6f6620697320696e76616c69642e0000000000006044820152606401610550565b600081611fee576040518060200160405280600081525061201a565b61201a86611ffd6001886136f1565b8151811061200d5761200d613b82565b6020026020010151612643565b919b919a509098505050505050505050565b606060006120398361266d565b90506000815167ffffffffffffffff81111561205757612057613358565b60405190808252806020026020018201604052801561209c57816020015b60408051808201909152606080825260208201528152602001906001900390816120755790505b50905060005b825181101561211f5760006120cf8483815181106120c2576120c2613b82565b60200260200101516126a0565b905060405180604001604052808281526020016120eb8361266d565b81525083838151811061210057612100613b82565b602002602001018190525050808061211790613af2565b9150506120a2565b509392505050565b600060608180806121378761274a565b9050600086905060008061215e604051806040016040528060608152602001606081525090565b60005b8c518110156125ff578c818151811061217c5761217c613b82565b6020026020010151915082846121929190613a74565b935061219f600188613a74565b96508361221d57815180516020909101208514612218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496e76616c696420726f6f7420686173680000000000000000000000000000006044820152606401610550565b61230d565b81515160201161229957815180516020909101208514612218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496e76616c6964206c6172676520696e7465726e616c206861736800000000006044820152606401610550565b815185906122a690613bb1565b1461230d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e76616c696420696e7465726e616c206e6f646520686173680000000000006044820152606401610550565b61231960106001613a74565b8260200151511415612392578551841415612333576125ff565b600086858151811061234757612347613b82565b602001015160f81c60f81b60f81c9050600083602001518260ff168151811061237257612372613b82565b60200260200101519050612385816128cd565b96506001945050506125ed565b6002826020015151141561258b5760006123ab83612903565b90506000816000815181106123c2576123c2613b82565b016020015160f81c905060006123d9600283613bf6565b6123e4906002613c18565b905060006123f5848360ff16612927565b905060006124038b8a612927565b90506000612411838361295d565b905060ff851660021480612428575060ff85166003145b1561247e5780835114801561243d5750808251145b1561244f5761244c818b613a74565b99505b507f800000000000000000000000000000000000000000000000000000000000000099506125ff945050505050565b60ff85161580612491575060ff85166001145b1561250357825181146124cd57507f800000000000000000000000000000000000000000000000000000000000000099506125ff945050505050565b6124f488602001516001815181106124e7576124e7613b82565b60200260200101516128cd565b9a5097506125ed945050505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f52656365697665642061206e6f6465207769746820616e20756e6b6e6f776e2060448201527f70726566697800000000000000000000000000000000000000000000000000006064820152608401610550565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f526563656976656420616e20756e706172736561626c65206e6f64652e0000006044820152606401610550565b806125f781613af2565b915050612161565b507f800000000000000000000000000000000000000000000000000000000000000084148661262e8786612927565b909e909d50909b509950505050505050505050565b6020810151805160609161146a9161265d906001906136f1565b815181106120c2576120c2613b82565b60408051808201825260008082526020918201528151808301909252825182528083019082015260609061146a90612a09565b606060008060006126b085612c3c565b9194509250905060008160018111156126cb576126cb613c3b565b14612732576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e00000000000000006044820152606401610550565b61274185602001518484613043565b95945050505050565b606060008251600261275c9190613943565b67ffffffffffffffff81111561277457612774613358565b6040519080825280601f01601f19166020018201604052801561279e576020820181803683370190505b50905060005b83518110156128c65760048482815181106127c1576127c1613b82565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c826127f6836002613943565b8151811061280657612806613b82565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350601084828151811061284957612849613b82565b016020015161285b919060f81c613bf6565b60f81b8261286a836002613943565b612875906001613a74565b8151811061288557612885613b82565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806128be81613af2565b9150506127a4565b5092915050565b600060606020836000015110156128ee576128e783613122565b90506128fa565b6128f7836126a0565b90505b6118b981613bb1565b606061146a61292283602001516000815181106120c2576120c2613b82565b61274a565b606082518210612946575060408051602081019091526000815261146a565b611467838384865161295891906136f1565b61312d565b6000805b8084511180156129715750808351115b80156129f2575082818151811061298a5761298a613b82565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168482815181106129c9576129c9613b82565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b156114675780612a0181613af2565b915050612961565b6060600080612a1784612c3c565b91935090915060019050816001811115612a3357612a33613c3b565b14612a9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e0000000000000000006044820152606401610550565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081612ab35790505090506000835b8651811015612c315760208210612b79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201527f7374206c656e6774682e000000000000000000000000000000000000000000006064820152608401610550565b600080612bb66040518060400160405280858c60000151612b9a91906136f1565b8152602001858c60200151612baf9190613a74565b9052612c3c565b509150915060405180604001604052808383612bd29190613a74565b8152602001848b60200151612be79190613a74565b815250858581518110612bfc57612bfc613b82565b6020908102919091010152612c12600185613a74565b9350612c1e8183613a74565b612c289084613a74565b92505050612ae0565b508152949350505050565b600080600080846000015111612cae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e00000000000000006044820152606401610550565b6020840151805160001a607f8111612cd357600060016000945094509450505061303c565b60b78111612d69576000612ce86080836136f1565b905080876000015111612d57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e000000000000006044820152606401610550565b6001955093506000925061303c915050565b60bf8111612e8c576000612d7e60b7836136f1565b905080876000015111612ded576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e006044820152606401610550565b600183015160208290036101000a9004612e078183613a74565b885111612e70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e00000000000000006044820152606401610550565b612e7b826001613a74565b965094506000935061303c92505050565b60f78111612f21576000612ea160c0836136f1565b905080876000015111612f10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e0000000000000000006044820152606401610550565b60019550935084925061303c915050565b6000612f2e60f7836136f1565b905080876000015111612f9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e0000006044820152606401610550565b600183015160208290036101000a9004612fb78183613a74565b885111613020576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496e76616c696420524c50206c6f6e67206c6973742e000000000000000000006044820152606401610550565b61302b826001613a74565b965094506001935061303c92505050565b9193909250565b606060008267ffffffffffffffff81111561306057613060613358565b6040519080825280601f01601f19166020018201604052801561308a576020820181803683370190505b50905080516000141561309e5790506118b9565b60006130aa8587613a74565b90506020820160005b6130be6020876139e4565b8110156130f557825182526130d4602084613a74565b92506130e1602083613a74565b9150806130ed81613af2565b9150506130b3565b5060006001602087066020036101000a039050808251168119845116178252839450505050509392505050565b606061146a82613305565b60608182601f01101561319c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610550565b828284011015613208576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610550565b81830184511015613275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610550565b60608215801561329457604051915060008252602082016040526132fc565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156132cd5780518352602092830192016132b5565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b606061146a826020015160008460000151613043565b60006020828403121561332d57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461167457600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156133ce576133ce613358565b604052919050565b600080600080600060a086880312156133ee57600080fd5b6133f786613334565b94506020808701359450604087013567ffffffffffffffff808216821461341d57600080fd5b909450606088013590811515821461343457600080fd5b9093506080880135908082111561344a57600080fd5b818901915089601f83011261345e57600080fd5b81358181111561347057613470613358565b6134a0847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613387565b91508082528a848285010111156134b657600080fd5b80848401858401376000848284010152508093505050509295509295909350565b60008083601f8401126134e957600080fd5b50813567ffffffffffffffff81111561350157600080fd5b60208301915083602082850101111561351957600080fd5b9250929050565b60008060008060008060008060008060006101808c8e03121561354257600080fd5b8b359a5061355260208d01613334565b995061356060408d01613334565b985060608c0135975060808c0135965067ffffffffffffffff60a08d0135111561358957600080fd5b6135998d60a08e01358e016134d7565b909650945060c08c0135935060808c8e037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff200112156135d757600080fd5b60e08c01925067ffffffffffffffff6101608d013511156135f757600080fd5b6136088d6101608e01358e016134d7565b81935080925050509295989b509295989b9093969950565b6000815180845260005b818110156136465760208185018101518683018201520161362a565b81811115613658576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b85815284602082015267ffffffffffffffff84166040820152821515606082015260a060808201526000611f2c60a0830184613620565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015613703576137036136c2565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261374657613746613708565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f80000000000000000000000000000000000000000000000000000000000000008314161561379a5761379a6136c2565b500590565b6000808312837f8000000000000000000000000000000000000000000000000000000000000000018312811516156137d9576137d96136c2565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01831381161561380d5761380d6136c2565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600084136000841385830485118282161615613854576138546136c2565b7f8000000000000000000000000000000000000000000000000000000000000000600087128682058812818416161561388f5761388f6136c2565b600087129250878205871284841616156138ab576138ab6136c2565b878505871281841616156138c1576138c16136c2565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03841381151615613909576139096136c2565b827f800000000000000000000000000000000000000000000000000000000000000003841281161561393d5761393d6136c2565b50500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561397b5761397b6136c2565b500290565b600067ffffffffffffffff8083168185168083038211156139a3576139a36136c2565b01949350505050565b60006fffffffffffffffffffffffffffffffff808316818516818304811182151516156139db576139db6136c2565b02949350505050565b6000826139f3576139f3613708565b500490565b600060408284031215613a0a57600080fd5b6040516040810181811067ffffffffffffffff82111715613a2d57613a2d613358565b604052825181526020928301519281019290925250919050565b600060208284031215613a5957600080fd5b5051919050565b600082613a6f57613a6f613708565b500690565b60008219821115613a8757613a876136c2565b500190565b600060808284031215613a9e57600080fd5b6040516080810181811067ffffffffffffffff82111715613ac157613ac1613358565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613b2457613b246136c2565b5060010190565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a0830152613b7660c0830184613620565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80516020808301519190811015613bf0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8160200360031b1b821691505b50919050565b600060ff831680613c0957613c09613708565b8060ff84160691505092915050565b600060ff821660ff841680821015613c3257613c326136c2565b90039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080a000a"
var OptimismPortalDeployedBin = "0x60806040526004361061012c5760003560e01c8063a14238e7116100a5578063cff0ab9611610074578063eecf1c3611610059578063eecf1c3614610427578063f4daa2911461043a578063f786becd1461046e57600080fd5b8063cff0ab9614610373578063e9e05c421461041457600080fd5b8063a14238e7146102e5578063c8b9153114610315578063ca3e99ba14610349578063cd7c97891461035e57600080fd5b80636bf2606a116100fc5780638129fc1c116100e15780638129fc1c1461028d578063867ead13146102a25780639bf62d82146102b857600080fd5b80636bf2606a146102295780636dbffb781461025d57600080fd5b80621c2ff61461015857806313620abd146101b657806364b79208146101ef5780636bb0291e1461021457600080fd5b36610153576101513334620186a06000604051806020016040528060008152506104a2565b005b600080fd5b34801561016457600080fd5b5061018c7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101c257600080fd5b506101ce633b9aca0081565b6040516fffffffffffffffffffffffffffffffff90911681526020016101ad565b3480156101fb57600080fd5b50610206627a120081565b6040519081526020016101ad565b34801561022057600080fd5b50610206600481565b34801561023557600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b34801561026957600080fd5b5061027d6102783660046134e3565b610948565b60405190151581526020016101ad565b34801561029957600080fd5b50610151610c56565b3480156102ae57600080fd5b5061020661271081565b3480156102c457600080fd5b5060335461018c9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102f157600080fd5b5061027d6103003660046134e3565b60346020526000908152604090205460ff1681565b34801561032157600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b34801561035557600080fd5b50610206610d31565b34801561036a57600080fd5b50610206600881565b34801561037f57600080fd5b506001546103db906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff92831660208501529116908201526060016101ad565b61015161042236600461359e565b6104a2565b6101516104353660046136e8565b610d42565b34801561044657600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b34801561047a57600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b8260005a905083156105595773ffffffffffffffffffffffffffffffffffffffff87161561055957604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f4f7074696d69736d506f7274616c3a206d7573742073656e6420746f2061646460448201527f72657373283029207768656e206372656174696e67206120636f6e747261637460648201526084015b60405180910390fd5b3332811461057a575033731111000000000000000000000000000000001111015b8773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f78231ae6eb73366f912bb1d64351601fb76344c537bbab635ce14d0f376f0195348a8a8a8a6040516105df959493929190613853565b60405180910390a35060015460009061061e907801000000000000000000000000000000000000000000000000900467ffffffffffffffff16436138b9565b905080156107a75760006106366004627a12006138ff565b6001546106619190700100000000000000000000000000000000900467ffffffffffffffff16613967565b9050600060086106756004627a12006138ff565b6001546106959085906fffffffffffffffffffffffffffffffff166139db565b61069f91906138ff565b6106a991906138ff565b6001549091506000906106f5906106df906106d79085906fffffffffffffffffffffffffffffffff16613a97565b612710611455565b6fffffffffffffffffffffffffffffffff611470565b90506001841115610768576107656106df670de0b6b3a764000061075161071d6008836138ff565b61072f90670de0b6b3a7640000613967565b61073a60018a6138b9565b61074c90670de0b6b3a7640000613b0b565b61147f565b61075b90856139db565b6106d791906138ff565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b600180548491906010906107da908490700100000000000000000000000000000000900467ffffffffffffffff16613b48565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550627a1200600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1613156108b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f7260448201527f6520676173207468616e20617661696c61626c6520676173206c696d697400006064820152608401610550565b6001546000906108e2906fffffffffffffffffffffffffffffffff1667ffffffffffffffff8616613b74565b6fffffffffffffffffffffffffffffffff169050600061090648633b9aca006114b0565b6109109083613bac565b905060005a61091f90866138b9565b90508082111561093b5761093b61093682846138b9565b6114c0565b5050505050505050505050565b6040517fa25ae55700000000000000000000000000000000000000000000000000000000815260048101829052600090819073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063a25ae557906024016040805180830381865afa1580156109d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fb9190613bc0565b8051909150610c1d5760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663529933df6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a959190613c0f565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634ab65d736040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b289190613c0f565b905084811115610b3d57506000949350505050565b600082610b4a83886138b9565b610b549190613c28565b905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663a25ae557610b9c83866138b9565b610ba69089613c3c565b6040518263ffffffff1660e01b8152600401610bc491815260200190565b6040805180830381865afa158015610be0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c049190613bc0565b8051909450610c195750600095945050505050565b5050505b7f00000000000000000000000000000000000000000000000000000000000000008160200151610c4d9190613c3c565b42119392505050565b6000610c6260016114ee565b90508015610c9757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055610ccb611679565b8015610d2e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b610d3f6004627a12006138ff565b81565b60335473ffffffffffffffffffffffffffffffffffffffff1661dead14610deb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a2063616e206f6e6c79207472696767657260448201527f206f6e65207769746864726177616c20706572207472616e73616374696f6e006064820152608401610550565b73ffffffffffffffffffffffffffffffffffffffff8916301415610e91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a20796f752063616e6e6f742073656e642060448201527f6d6573736167657320746f2074686520706f7274616c20636f6e7472616374006064820152608401610550565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018590526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a25ae557906024016040805180830381865afa158015610f1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f429190613bc0565b90507f00000000000000000000000000000000000000000000000000000000000000008160200151610f749190613c3c565b4211611002576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4f7074696d69736d506f7274616c3a2070726f706f73616c206973206e6f742060448201527f7965742066696e616c697a6564000000000000000000000000000000000000006064820152608401610550565b61101961101436869003860186613c54565b61175c565b8151146110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f7074696d69736d506f7274616c3a20696e76616c6964206f7574707574207260448201527f6f6f742070726f6f6600000000000000000000000000000000000000000000006064820152608401610550565b60006110ee8d8d8d8d8d8d8d8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506117b892505050565b905061113581866040013586868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506117f792505050565b6111c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a20696e76616c696420776974686472617760448201527f616c20696e636c7573696f6e2070726f6f6600000000000000000000000000006064820152608401610550565b60008181526034602052604090205460ff1615611260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206160448201527f6c7265616479206265656e2066696e616c697a656400000000000000000000006064820152608401610550565b600081815260346020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556112a3614e208a613c3c565b5a1015611332576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4f7074696d69736d506f7274616c3a20696e73756666696369656e742067617360448201527f20746f2066696e616c697a65207769746864726177616c0000000000000000006064820152608401610550565b603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8e16179055604080516020601f8a018190048102820181019092528881526000916113bb918e918d918f918691908f908f90819084018382808284376000920191909152506118c092505050565b50603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405190915082907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b9061142190841515815260200190565b60405180910390a25050505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b6000818312156114655781611467565b825b90505b92915050565b60008183126114655781611467565b6000611467670de0b6b3a7640000836114978661194b565b6114a191906139db565b6114ab91906138ff565b611b8f565b6000818310156114655781611467565b6000805a90505b825a6114d390836138b9565b10156114e9576114e282613cba565b91506114c7565b505050565b60008054610100900460ff16156115a5578160ff1660011480156115115750303b155b61159d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610550565b506000919050565b60005460ff80841691161061163c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610550565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600054610100900460ff16611710576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610550565b60408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6000816000015182602001518360400151846060015160405160200161179b949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b60008686868686866040516020016117d596959493929190613cf3565b6040516020818303038152906040528051906020012090509695505050505050565b604080516020810185905260009181018290528190606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830181905292506118b59101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152600182527f01000000000000000000000000000000000000000000000000000000000000006020830152908587611dce565b9150505b9392505050565b6000606060008060008661ffff1667ffffffffffffffff8111156118e6576118e6613520565b6040519080825280601f01601f191660200182016040528015611910576020820181803683370190505b5090506000808751602089018b8e8ef191503d925086831115611931578692505b828152826000602083013e90999098509650505050505050565b60008082136119b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610550565b600060606119c384611df2565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c18213611bc057506000919050565b680755bf798b4a1bf1e58212611c32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4558505f4f564552464c4f5700000000000000000000000000000000000000006044820152606401610550565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b600080611dda86611ec8565b9050611de881868686611efa565b9695505050505050565b6000808211611e5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610550565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b60608180519060200120604051602001611ee491815260200190565b6040516020818303038152906040529050919050565b6000806000611f0a878686611f37565b91509150818015611f2c57508051602080830191909120875191880191909120145b979650505050505050565b600060606000611f4685612052565b90506000806000611f58848a8961214d565b81519295509093509150158080611f6c5750815b611ff8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4d65726b6c65547269653a2070726f76696465642070726f6f6620697320696e60448201527f76616c69640000000000000000000000000000000000000000000000000000006064820152608401610550565b6000816120145760405180602001604052806000815250612040565b612040866120236001886138b9565b8151811061203357612033613d4a565b60200260200101516126db565b919b919a509098505050505050505050565b6060600061205f83612705565b90506000815167ffffffffffffffff81111561207d5761207d613520565b6040519080825280602002602001820160405280156120c257816020015b604080518082019091526060808252602082015281526020019060019003908161209b5790505b50905060005b82518110156121455760006120f58483815181106120e8576120e8613d4a565b6020026020010151612738565b9050604051806040016040528082815260200161211183612705565b81525083838151811061212657612126613d4a565b602002602001018190525050808061213d90613cba565b9150506120c8565b509392505050565b6000606081808061215d87612808565b90506000869050600080612184604051806040016040528060608152602001606081525090565b60005b8c51811015612697578c81815181106121a2576121a2613d4a565b6020026020010151915082846121b89190613c3c565b93506121c5600188613c3c565b9650836122435781518051602090910120851461223e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f7420686173680000006044820152606401610550565b61237f565b8151516020116122e55781518051602090910120851461223e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e60448201527f616c2068617368000000000000000000000000000000000000000000000000006064820152608401610550565b815185906122f290613d79565b1461237f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f6460448201527f65206861736800000000000000000000000000000000000000000000000000006064820152608401610550565b61238b60106001613c3c565b82602001515114156124045785518414156123a557612697565b60008685815181106123b9576123b9613d4a565b602001015160f81c60f81b60f81c9050600083602001518260ff16815181106123e4576123e4613d4a565b602002602001015190506123f78161298b565b9650600194505050612685565b600282602001515114156125fd57600061241d836129c1565b905060008160008151811061243457612434613d4a565b016020015160f81c9050600061244b600283613dbe565b612456906002613de0565b90506000612467848360ff166129e5565b905060006124758b8a6129e5565b905060006124838383612a1b565b905060ff85166002148061249a575060ff85166003145b156124f0578083511480156124af5750808251145b156124c1576124be818b613c3c565b99505b507f80000000000000000000000000000000000000000000000000000000000000009950612697945050505050565b60ff85161580612503575060ff85166001145b15612575578251811461253f57507f80000000000000000000000000000000000000000000000000000000000000009950612697945050505050565b612566886020015160018151811061255957612559613d4a565b602002602001015161298b565b9a509750612685945050505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f6465207769746860448201527f20616e20756e6b6e6f776e2070726566697800000000000000000000000000006064820152608401610550565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e70617273656160448201527f626c65206e6f64650000000000000000000000000000000000000000000000006064820152608401610550565b8061268f81613cba565b915050612187565b507f80000000000000000000000000000000000000000000000000000000000000008414866126c687866129e5565b909e909d50909b509950505050505050505050565b6020810151805160609161146a916126f5906001906138b9565b815181106120e8576120e8613d4a565b60408051808201825260008082526020918201528151808301909252825182528083019082015260609061146a90612ac7565b6060600080600061274885612d20565b91945092509050600081600181111561276357612763613e03565b146127f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f524c505265616465723a20696e76616c696420524c502062797465732076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610550565b6127ff8560200151848461320b565b95945050505050565b606060008251600261281a9190613b0b565b67ffffffffffffffff81111561283257612832613520565b6040519080825280601f01601f19166020018201604052801561285c576020820181803683370190505b50905060005b835181101561298457600484828151811061287f5761287f613d4a565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c826128b4836002613b0b565b815181106128c4576128c4613d4a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350601084828151811061290757612907613d4a565b0160200151612919919060f81c613dbe565b60f81b82612928836002613b0b565b612933906001613c3c565b8151811061294357612943613d4a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508061297c81613cba565b915050612862565b5092915050565b600060606020836000015110156129ac576129a5836132ea565b90506129b8565b6129b583612738565b90505b6118b981613d79565b606061146a6129e083602001516000815181106120e8576120e8613d4a565b612808565b606082518210612a04575060408051602081019091526000815261146a565b6114678383848651612a1691906138b9565b6132f5565b6000805b808451118015612a2f5750808351115b8015612ab05750828181518110612a4857612a48613d4a565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916848281518110612a8757612a87613d4a565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b156114675780612abf81613cba565b915050612a1f565b6060600080612ad584612d20565b91935090915060019050816001811115612af157612af1613e03565b14612b7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f524c505265616465723a20696e76616c696420524c50206c6973742076616c7560448201527f65000000000000000000000000000000000000000000000000000000000000006064820152608401610550565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081612b975790505090506000835b8651811015612d155760208210612c5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f524c505265616465723a2070726f766964656420524c50206c6973742065786360448201527f65656473206d6178206c697374206c656e6774680000000000000000000000006064820152608401610550565b600080612c9a6040518060400160405280858c60000151612c7e91906138b9565b8152602001858c60200151612c939190613c3c565b9052612d20565b509150915060405180604001604052808383612cb69190613c3c565b8152602001848b60200151612ccb9190613c3c565b815250858581518110612ce057612ce0613d4a565b6020908102919091010152612cf6600185613c3c565b9350612d028183613c3c565b612d0c9084613c3c565b92505050612bc4565b508152949350505050565b600080600080846000015111612db8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f524c505265616465723a20524c50206974656d2063616e6e6f74206265206e7560448201527f6c6c0000000000000000000000000000000000000000000000000000000000006064820152608401610550565b6020840151805160001a607f8111612ddd576000600160009450945094505050613204565b60b78111612e99576000612df26080836138b9565b905080876000015111612e87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f524c505265616465723a20696e76616c696420524c502073686f72742073747260448201527f696e6700000000000000000000000000000000000000000000000000000000006064820152608401610550565b60019550935060009250613204915050565b60bf8111613008576000612eae60b7836138b9565b905080876000015111612f43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f524c505265616465723a20696e76616c696420524c50206c6f6e67207374726960448201527f6e67206c656e67746800000000000000000000000000000000000000000000006064820152608401610550565b600183015160208290036101000a9004612f5d8183613c3c565b885111612fec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f524c505265616465723a20696e76616c696420524c50206c6f6e67207374726960448201527f6e670000000000000000000000000000000000000000000000000000000000006064820152608401610550565b612ff7826001613c3c565b965094506000935061320492505050565b60f781116130c357600061301d60c0836138b9565b9050808760000151116130b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f524c505265616465723a20696e76616c696420524c502073686f7274206c697360448201527f74000000000000000000000000000000000000000000000000000000000000006064820152608401610550565b600195509350849250613204915050565b60006130d060f7836138b9565b905080876000015111613165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f524c505265616465723a20696e76616c696420524c50206c6f6e67206c69737460448201527f206c656e677468000000000000000000000000000000000000000000000000006064820152608401610550565b600183015160208290036101000a900461317f8183613c3c565b8851116131e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f524c505265616465723a20696e76616c696420524c50206c6f6e67206c6973746044820152606401610550565b6131f3826001613c3c565b965094506001935061320492505050565b9193909250565b606060008267ffffffffffffffff81111561322857613228613520565b6040519080825280601f01601f191660200182016040528015613252576020820181803683370190505b5090508051600014156132665790506118b9565b60006132728587613c3c565b90506020820160005b613286602087613bac565b8110156132bd578251825261329c602084613c3c565b92506132a9602083613c3c565b9150806132b581613cba565b91505061327b565b5060006001602087066020036101000a039050808251168119845116178252839450505050509392505050565b606061146a826134cd565b60608182601f011015613364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610550565b8282840110156133d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610550565b8183018451101561343d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610550565b60608215801561345c57604051915060008252602082016040526134c4565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561349557805183526020928301920161347d565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b606061146a82602001516000846000015161320b565b6000602082840312156134f557600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461167457600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561359657613596613520565b604052919050565b600080600080600060a086880312156135b657600080fd5b6135bf866134fc565b94506020808701359450604087013567ffffffffffffffff80821682146135e557600080fd5b90945060608801359081151582146135fc57600080fd5b9093506080880135908082111561361257600080fd5b818901915089601f83011261362657600080fd5b81358181111561363857613638613520565b613668847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161354f565b91508082528a8482850101111561367e57600080fd5b80848401858401376000848284010152508093505050509295509295909350565b60008083601f8401126136b157600080fd5b50813567ffffffffffffffff8111156136c957600080fd5b6020830191508360208285010111156136e157600080fd5b9250929050565b60008060008060008060008060008060006101808c8e03121561370a57600080fd5b8b359a5061371a60208d016134fc565b995061372860408d016134fc565b985060608c0135975060808c0135965067ffffffffffffffff60a08d0135111561375157600080fd5b6137618d60a08e01358e0161369f565b909650945060c08c0135935060808c8e037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561379f57600080fd5b60e08c01925067ffffffffffffffff6101608d013511156137bf57600080fd5b6137d08d6101608e01358e0161369f565b81935080925050509295989b509295989b9093969950565b6000815180845260005b8181101561380e576020818501810151868301820152016137f2565b81811115613820576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b85815284602082015267ffffffffffffffff84166040820152821515606082015260a060808201526000611f2c60a08301846137e8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156138cb576138cb61388a565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261390e5761390e6138d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f8000000000000000000000000000000000000000000000000000000000000000831416156139625761396261388a565b500590565b6000808312837f8000000000000000000000000000000000000000000000000000000000000000018312811516156139a1576139a161388a565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0183138116156139d5576139d561388a565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600084136000841385830485118282161615613a1c57613a1c61388a565b7f80000000000000000000000000000000000000000000000000000000000000006000871286820588128184161615613a5757613a5761388a565b60008712925087820587128484161615613a7357613a7361388a565b87850587128184161615613a8957613a8961388a565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03841381151615613ad157613ad161388a565b827f8000000000000000000000000000000000000000000000000000000000000000038412811615613b0557613b0561388a565b50500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b4357613b4361388a565b500290565b600067ffffffffffffffff808316818516808303821115613b6b57613b6b61388a565b01949350505050565b60006fffffffffffffffffffffffffffffffff80831681851681830481118215151615613ba357613ba361388a565b02949350505050565b600082613bbb57613bbb6138d0565b500490565b600060408284031215613bd257600080fd5b6040516040810181811067ffffffffffffffff82111715613bf557613bf5613520565b604052825181526020928301519281019290925250919050565b600060208284031215613c2157600080fd5b5051919050565b600082613c3757613c376138d0565b500690565b60008219821115613c4f57613c4f61388a565b500190565b600060808284031215613c6657600080fd5b6040516080810181811067ffffffffffffffff82111715613c8957613c89613520565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613cec57613cec61388a565b5060010190565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a0830152613d3e60c08301846137e8565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80516020808301519190811015613db8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8160200360031b1b821691505b50919050565b600060ff831680613dd157613dd16138d0565b8060ff84160691505092915050565b600060ff821660ff841680821015613dfa57613dfa61388a565b90039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080a000a"
......@@ -42,26 +42,26 @@ L1CrossDomainMessenger_Test:test_L1MessengerPause() (gas: 48061)
L1CrossDomainMessenger_Test:test_L1MessengerRelayMessageFirstStuckSecondSucceeds() (gas: 201827)
L1CrossDomainMessenger_Test:test_L1MessengerRelayMessageRevertsOnReentrancy() (gas: 195116)
L1CrossDomainMessenger_Test:test_L1MessengerRelayMessageSucceeds() (gas: 77762)
L1CrossDomainMessenger_Test:test_L1MessengerRelayMessageToSystemContract() (gas: 67801)
L1CrossDomainMessenger_Test:test_L1MessengerRelayMessageToSystemContract() (gas: 67873)
L1CrossDomainMessenger_Test:test_L1MessengerRelayShouldRevertIfPaused() (gas: 60471)
L1CrossDomainMessenger_Test:test_L1MessengerReplayMessageWithValue() (gas: 38127)
L1CrossDomainMessenger_Test:test_L1MessengerSendMessage() (gas: 297745)
L1CrossDomainMessenger_Test:test_L1MessengerTwiceSendMessage() (gas: 1490048)
L1CrossDomainMessenger_Test:test_L1MessengerUnpause() (gas: 40908)
L1CrossDomainMessenger_Test:test_L1MessengerXDomainSenderReverts() (gas: 24249)
L1CrossDomainMessenger_Test:test_L1MessengerxDomainMessageSenderResets() (gas: 86168)
L1CrossDomainMessenger_Test:test_L1MessengerXDomainSenderReverts() (gas: 24291)
L1CrossDomainMessenger_Test:test_L1MessengerxDomainMessageSenderResets() (gas: 86269)
L1StandardBridge_Test:test_depositERC20() (gas: 578911)
L1StandardBridge_Test:test_depositERC20To() (gas: 581092)
L1StandardBridge_Test:test_depositETH() (gas: 372953)
L1StandardBridge_Test:test_depositETHTo() (gas: 330097)
L1StandardBridge_Test:test_finalizeBridgeERC20FailSendBack() (gas: 681339)
L1StandardBridge_Test:test_finalizeBridgeERC20FailSendBack() (gas: 681356)
L1StandardBridge_Test:test_finalizeERC20Withdrawal() (gas: 490817)
L1StandardBridge_Test:test_finalizeETHWithdrawal() (gas: 64453)
L1StandardBridge_Test:test_initialize() (gas: 26401)
L1StandardBridge_Test:test_onlyEOADepositERC20() (gas: 22341)
L1StandardBridge_Test:test_onlyEOADepositETH() (gas: 40882)
L1StandardBridge_Test:test_onlyL2BridgeFinalizeERC20Withdrawal() (gas: 36294)
L1StandardBridge_Test:test_onlyPortalFinalizeERC20Withdrawal() (gas: 35578)
L1StandardBridge_Test:test_onlyEOADepositERC20() (gas: 22377)
L1StandardBridge_Test:test_onlyEOADepositETH() (gas: 40918)
L1StandardBridge_Test:test_onlyL2BridgeFinalizeERC20Withdrawal() (gas: 36330)
L1StandardBridge_Test:test_onlyPortalFinalizeERC20Withdrawal() (gas: 35614)
L1StandardBridge_Test:test_receive() (gas: 519538)
L2CrossDomainMessenger_Test:testCannot_L2MessengerPause() (gas: 10823)
L2CrossDomainMessenger_Test:test_L1MessengerRelayMessageRevertsOnReentrancy() (gas: 171968)
......@@ -69,12 +69,12 @@ L2CrossDomainMessenger_Test:test_L2MessengerMessageVersion() (gas: 8455)
L2CrossDomainMessenger_Test:test_L2MessengerPause() (gas: 31750)
L2CrossDomainMessenger_Test:test_L2MessengerRelayMessageFirstStuckSecondSucceeds() (gas: 173004)
L2CrossDomainMessenger_Test:test_L2MessengerRelayMessageSucceeds() (gas: 57311)
L2CrossDomainMessenger_Test:test_L2MessengerRelayMessageToSystemContract() (gas: 36115)
L2CrossDomainMessenger_Test:test_L2MessengerRelayMessageToSystemContract() (gas: 36151)
L2CrossDomainMessenger_Test:test_L2MessengerRelayShouldRevertIfPaused() (gas: 41578)
L2CrossDomainMessenger_Test:test_L2MessengerSendMessage() (gas: 120536)
L2CrossDomainMessenger_Test:test_L2MessengerTwiceSendMessage() (gas: 133720)
L2CrossDomainMessenger_Test:test_L2MessengerXDomainSenderReverts() (gas: 10554)
L2CrossDomainMessenger_Test:test_L2MessengerxDomainMessageSenderResets() (gas: 54732)
L2CrossDomainMessenger_Test:test_L2MessengerXDomainSenderReverts() (gas: 10590)
L2CrossDomainMessenger_Test:test_L2MessengerxDomainMessageSenderResets() (gas: 54798)
L2OutputOracleTest:testCannot_ProposeWithUnmatchedBlockhash() (gas: 26786)
L2OutputOracleTest:testCannot_deleteL2Output_ifNotOwner() (gas: 24844)
L2OutputOracleTest:testCannot_deleteL2Output_withWrongRoot() (gas: 91114)
......@@ -98,16 +98,16 @@ L2OutputOracleUpgradeable_Test:test_cannotInitImpl() (gas: 19451)
L2OutputOracleUpgradeable_Test:test_cannotInitProxy() (gas: 24450)
L2OutputOracleUpgradeable_Test:test_initValuesOnProxy() (gas: 38899)
L2OutputOracleUpgradeable_Test:test_upgrading() (gas: 230843)
L2StandardBridge_Test:test_ERC20BridgeFailed_whenLocalTokenIsBridge() (gas: 133459)
L2StandardBridge_Test:test_cannotWithdrawEthWithoutSendingIt() (gas: 21656)
L2StandardBridge_Test:test_finalizeBridgeERC20FailSendBack() (gas: 499042)
L2StandardBridge_Test:test_ERC20BridgeFailed_whenLocalTokenIsBridge() (gas: 133477)
L2StandardBridge_Test:test_cannotWithdrawEthWithoutSendingIt() (gas: 21689)
L2StandardBridge_Test:test_finalizeBridgeERC20FailSendBack() (gas: 499057)
L2StandardBridge_Test:test_finalizeDeposit() (gas: 93203)
L2StandardBridge_Test:test_finalizeDeposit_failsToCompleteOutboundTransfer() (gas: 140492)
L2StandardBridge_Test:test_initialize() (gas: 14802)
L2StandardBridge_Test:test_receive() (gas: 136864)
L2StandardBridge_Test:test_withdraw() (gas: 353022)
L2StandardBridge_Test:test_withdrawTo() (gas: 353706)
L2StandardBridge_Test:test_withdraw_onlyEOA() (gas: 252006)
L2StandardBridge_Test:test_withdraw_onlyEOA() (gas: 252032)
L2ToL1MessagePasserTest:test_burn() (gas: 112037)
L2ToL1MessagePasserTest:test_initiateWithdrawal_fromContract() (gas: 67892)
L2ToL1MessagePasserTest:test_initiateWithdrawal_fromEOA() (gas: 74831)
......@@ -130,9 +130,9 @@ OptimismMintableERC20_Test:test_mint() (gas: 65754)
OptimismMintableERC20_Test:test_mintRevertsFromNotBridge() (gas: 13243)
OptimismMintableERC20_Test:test_remoteToken() (gas: 9740)
OptimismMintableTokenFactory_Test:test_bridge() (gas: 7663)
OptimismMintableTokenFactory_Test:test_createStandardL2Token() (gas: 1113150)
OptimismMintableTokenFactory_Test:test_createStandardL2TokenSameTwice() (gas: 2209211)
OptimismMintableTokenFactory_Test:test_createStandardL2TokenShouldRevertIfRemoteIsZero() (gas: 9399)
OptimismMintableTokenFactory_Test:test_createStandardL2Token() (gas: 1113127)
OptimismMintableTokenFactory_Test:test_createStandardL2TokenSameTwice() (gas: 2209165)
OptimismMintableTokenFactory_Test:test_createStandardL2TokenShouldRevertIfRemoteIsZero() (gas: 9398)
OptimismPortalUpgradeable_Test:test_cannotInitImpl() (gas: 10686)
OptimismPortalUpgradeable_Test:test_cannotInitProxy() (gas: 15662)
OptimismPortalUpgradeable_Test:test_initValuesOnProxy() (gas: 15990)
......@@ -189,37 +189,37 @@ ProxyAdmin_Test:test_setImplementationName() (gas: 39002)
RLPReader_Test:testReadBool() (gas: 1109)
RLPReader_Test:test_readAddress() (gas: 1347)
RLPReader_Test:test_readAddressSmall() (gas: 614)
RLPReader_Test:test_readAddressTooLarge() (gas: 3646)
RLPReader_Test:test_readAddressTooShort() (gas: 3603)
RLPReader_Test:test_readAddressTooLarge() (gas: 3679)
RLPReader_Test:test_readAddressTooShort() (gas: 3636)
RLPReader_Test:test_readBoolInvalidValue() (gas: 3677)
RLPReader_Test:test_readBoolLargeInput() (gas: 3550)
RLPReader_Test:test_readBytes32_revertOnList() (gas: 3998)
RLPReader_Test:test_readBytes32_revertOnTooLong() (gas: 3588)
RLPReader_Test:test_readBoolLargeInput() (gas: 3583)
RLPReader_Test:test_readBytes32_revertOnList() (gas: 4031)
RLPReader_Test:test_readBytes32_revertOnTooLong() (gas: 3621)
RLPReader_Test:test_readBytes_bytestring00() (gas: 1823)
RLPReader_Test:test_readBytes_bytestring01() (gas: 1846)
RLPReader_Test:test_readBytes_bytestring7f() (gas: 1844)
RLPReader_Test:test_readBytes_invalidListLength() (gas: 3812)
RLPReader_Test:test_readBytes_invalidStringLength() (gas: 3768)
RLPReader_Test:test_readBytes_revertListItem() (gas: 3922)
RLPReader_Test:test_readBytes_invalidListLength() (gas: 3845)
RLPReader_Test:test_readBytes_invalidStringLength() (gas: 3801)
RLPReader_Test:test_readBytes_revertListItem() (gas: 3955)
RLPReader_Test:test_readList_dictTest1() (gas: 23791)
RLPReader_Test:test_readList_empty() (gas: 4472)
RLPReader_Test:test_readList_incorrectLengthInArray() (gas: 4210)
RLPReader_Test:test_readList_int32Overflow() (gas: 3955)
RLPReader_Test:test_readList_int32Overflow2() (gas: 4021)
RLPReader_Test:test_readList_invalidShortList() (gas: 3855)
RLPReader_Test:test_readList_invalidValue() (gas: 3787)
RLPReader_Test:test_readList_leadingZerosInLongLengthArray1() (gas: 4193)
RLPReader_Test:test_readList_leadingZerosInLongLengthArray2() (gas: 4177)
RLPReader_Test:test_readList_incorrectLengthInArray() (gas: 4243)
RLPReader_Test:test_readList_int32Overflow() (gas: 3988)
RLPReader_Test:test_readList_int32Overflow2() (gas: 4015)
RLPReader_Test:test_readList_invalidShortList() (gas: 3888)
RLPReader_Test:test_readList_invalidValue() (gas: 3820)
RLPReader_Test:test_readList_leadingZerosInLongLengthArray1() (gas: 4226)
RLPReader_Test:test_readList_leadingZerosInLongLengthArray2() (gas: 4210)
RLPReader_Test:test_readList_leadingZerosInLongLengthList1() (gas: 38560)
RLPReader_Test:test_readList_listOfLists() (gas: 9619)
RLPReader_Test:test_readList_listOfLists2() (gas: 12479)
RLPReader_Test:test_readList_longList1() (gas: 29013)
RLPReader_Test:test_readList_longList2() (gas: 202895)
RLPReader_Test:test_readList_longStringLength() (gas: 3853)
RLPReader_Test:test_readList_longStringLength() (gas: 3886)
RLPReader_Test:test_readList_multiList() (gas: 12025)
RLPReader_Test:test_readList_nonOptimalLongLengthArray1() (gas: 4200)
RLPReader_Test:test_readList_nonOptimalLongLengthArray2() (gas: 4223)
RLPReader_Test:test_readList_notLongEnough() (gas: 3841)
RLPReader_Test:test_readList_nonOptimalLongLengthArray1() (gas: 4233)
RLPReader_Test:test_readList_nonOptimalLongLengthArray2() (gas: 4256)
RLPReader_Test:test_readList_notLongEnough() (gas: 3874)
RLPReader_Test:test_readList_shortListMax1() (gas: 40662)
RLPReader_Test:test_readList_stringList() (gas: 16796)
RLPReader_Test:test_readString_emptyString() (gas: 1719)
......@@ -276,4 +276,4 @@ SequencerFeeVault_Test:test_constructor() (gas: 7656)
SequencerFeeVault_Test:test_minWithdrawalAmount() (gas: 5407)
SequencerFeeVault_Test:test_receive() (gas: 17338)
SequencerFeeVault_Test:test_revertWithdraw() (gas: 9332)
SequencerFeeVault_Test:test_withdraw() (gas: 147582)
SequencerFeeVault_Test:test_withdraw() (gas: 147588)
......@@ -111,7 +111,7 @@ contract L2OutputOracle is OwnableUpgradeable, Semver {
* @notice Reverts if called by any account other than the proposer.
*/
modifier onlyProposer() {
require(proposer == msg.sender, "OutputOracle: caller is not the proposer");
require(proposer == msg.sender, "L2OutputOracle: function can only be called by proposer");
_;
}
......@@ -139,7 +139,7 @@ contract L2OutputOracle is OwnableUpgradeable, Semver {
) Semver(0, 0, 1) {
require(
_l2BlockTime < block.timestamp,
"Output Oracle: Initial L2 block time must be less than current time"
"L2OutputOracle: initial L2 block time must be less than current time"
);
SUBMISSION_INTERVAL = _submissionInterval;
......@@ -190,13 +190,18 @@ contract L2OutputOracle is OwnableUpgradeable, Semver {
) external payable onlyProposer {
require(
_l2BlockNumber == nextBlockNumber(),
"OutputOracle: Block number must be equal to next expected block number."
"L2OutputOracle: block number must be equal to next expected block number"
);
require(
computeL2Timestamp(_l2BlockNumber) < block.timestamp,
"OutputOracle: Cannot propose L2 output in future."
"L2OutputOracle: cannot propose L2 output in the future"
);
require(
_outputRoot != bytes32(0),
"L2OutputOracle: L2 output proposal cannot be the zero hash"
);
require(_outputRoot != bytes32(0), "OutputOracle: Cannot submit empty L2 output.");
if (_l1Blockhash != bytes32(0)) {
// This check allows the proposer to propose an output based on a given L1 block,
......@@ -209,7 +214,7 @@ contract L2OutputOracle is OwnableUpgradeable, Semver {
// finalized.
require(
blockhash(_l1BlockNumber) == _l1Blockhash,
"OutputOracle: Blockhash does not match the hash at the expected height."
"L2OutputOracle: blockhash does not match the hash at the expected height"
);
}
......@@ -233,11 +238,12 @@ contract L2OutputOracle is OwnableUpgradeable, Semver {
require(
_proposal.outputRoot == outputToDelete.outputRoot,
"OutputOracle: The output root to delete does not match the latest output proposal."
"L2OutputOracle: output root to delete does not match the latest output proposal"
);
require(
_proposal.timestamp == outputToDelete.timestamp,
"OutputOracle: The timestamp to delete does not match the latest output proposal."
"L2OutputOracle: timestamp to delete does not match the latest output proposal"
);
emit OutputDeleted(outputToDelete.outputRoot, outputToDelete.timestamp, latestBlockNumber);
......@@ -272,7 +278,7 @@ contract L2OutputOracle is OwnableUpgradeable, Semver {
function computeL2Timestamp(uint256 _l2BlockNumber) public view returns (uint256) {
require(
_l2BlockNumber >= STARTING_BLOCK_NUMBER,
"OutputOracle: Block number must be greater than or equal to the starting block number."
"L2OutputOracle: block number must be greater than or equal to starting block number"
);
return STARTING_TIMESTAMP + ((_l2BlockNumber - STARTING_BLOCK_NUMBER) * L2_BLOCK_TIME);
......@@ -283,8 +289,16 @@ contract L2OutputOracle is OwnableUpgradeable, Semver {
* Can only be called by the current owner.
*/
function changeProposer(address _newProposer) public onlyOwner {
require(_newProposer != address(0), "OutputOracle: new proposer is the zero address");
require(_newProposer != owner(), "OutputOracle: proposer cannot be same as the owner");
require(
_newProposer != address(0),
"L2OutputOracle: new proposer cannot be the zero address"
);
require(
_newProposer != owner(),
"L2OutputOracle: proposer cannot be the same as the owner"
);
emit ProposerChanged(proposer, _newProposer);
proposer = _newProposer;
}
......
......@@ -143,7 +143,7 @@ abstract contract ResourceMetering is Initializable {
params.prevBoughtGas += _amount;
require(
int256(uint256(params.prevBoughtGas)) <= MAX_RESOURCE_LIMIT,
"OptimismPortal: cannot buy more gas than available gas limit"
"ResourceMetering: cannot buy more gas than available gas limit"
);
// Determine the amount of ETH to be paid.
......
......@@ -186,7 +186,11 @@ contract L2StandardBridge is StandardBridge, Semver {
) internal {
address l1Token = OptimismMintableERC20(_l2Token).l1Token();
if (_l2Token == PredeployAddresses.LEGACY_ERC20_ETH) {
require(msg.value == _amount, "ETH withdrawals must include sufficient ETH value.");
require(
msg.value == _amount,
"L2StandardBridge: ETH withdrawals must include sufficient ETH value"
);
_initiateBridgeETH(_from, _to, _amount, _minGasLimit, _extraData);
} else {
_initiateBridgeERC20(_l2Token, l1Token, _from, _to, _amount, _minGasLimit, _extraData);
......
......@@ -39,14 +39,11 @@ contract SequencerFeeVault is Semver {
function withdraw() external {
require(
address(this).balance >= MIN_WITHDRAWAL_AMOUNT,
// solhint-disable-next-line max-line-length
"OVM_SequencerFeeVault: withdrawal amount must be greater than minimum withdrawal amount"
"SequencerFeeVault: withdrawal amount must be greater than minimum withdrawal amount"
);
uint256 balance = address(this).balance;
L2StandardBridge(payable(PredeployAddresses.L2_STANDARD_BRIDGE)).withdrawTo{
value: balance
}(PredeployAddresses.LEGACY_ERC20_ETH, l1FeeWallet, balance, 0, bytes(""));
value: address(this).balance
}(PredeployAddresses.LEGACY_ERC20_ETH, l1FeeWallet, address(this).balance, 0, bytes(""));
}
}
......@@ -146,7 +146,7 @@ contract L1ChugSplashProxy {
// should be doing this check anyway though.
require(
_getAccountCodeHash(newImplementation) == keccak256(_code),
"L1ChugSplashProxy: code was not correctly deployed."
"L1ChugSplashProxy: code was not correctly deployed"
);
_setImplementation(newImplementation);
......
......@@ -59,7 +59,7 @@ library RLPReader {
function readList(RLPItem memory _in) internal pure returns (RLPItem[] memory) {
(uint256 listOffset, , RLPItemType itemType) = _decodeLength(_in);
require(itemType == RLPItemType.LIST_ITEM, "Invalid RLP list value.");
require(itemType == RLPItemType.LIST_ITEM, "RLPReader: invalid RLP list value");
// Solidity in-memory arrays can't be increased in size, but *can* be decreased in size by
// writing to the length. Since we can't know the number of RLP items without looping over
......@@ -70,7 +70,10 @@ library RLPReader {
uint256 itemCount = 0;
uint256 offset = listOffset;
while (offset < _in.length) {
require(itemCount < MAX_LIST_LENGTH, "Provided RLP list exceeds max list length.");
require(
itemCount < MAX_LIST_LENGTH,
"RLPReader: provided RLP list exceeds max list length"
);
(uint256 itemOffset, uint256 itemLength, ) = _decodeLength(
RLPItem({ length: _in.length - offset, ptr: _in.ptr + offset })
......@@ -111,7 +114,7 @@ library RLPReader {
function readBytes(RLPItem memory _in) internal pure returns (bytes memory) {
(uint256 itemOffset, uint256 itemLength, RLPItemType itemType) = _decodeLength(_in);
require(itemType == RLPItemType.DATA_ITEM, "Invalid RLP bytes value.");
require(itemType == RLPItemType.DATA_ITEM, "RLPReader: invalid RLP bytes value");
return _copy(_in.ptr, itemOffset, itemLength);
}
......@@ -157,11 +160,11 @@ library RLPReader {
* @return Decoded bytes32.
*/
function readBytes32(RLPItem memory _in) internal pure returns (bytes32) {
require(_in.length <= 33, "Invalid RLP bytes32 value.");
require(_in.length <= 33, "RLPReader: invalid RLP bytes32 value");
(uint256 itemOffset, uint256 itemLength, RLPItemType itemType) = _decodeLength(_in);
require(itemType == RLPItemType.DATA_ITEM, "Invalid RLP bytes32 value.");
require(itemType == RLPItemType.DATA_ITEM, "RLPReader: invalid RLP bytes32 value");
uint256 ptr = _in.ptr + itemOffset;
bytes32 out;
......@@ -218,7 +221,7 @@ library RLPReader {
* @return Decoded bool.
*/
function readBool(RLPItem memory _in) internal pure returns (bool) {
require(_in.length == 1, "Invalid RLP boolean value.");
require(_in.length == 1, "RLPReader: invalid RLP boolean value");
uint256 ptr = _in.ptr;
uint256 out;
......@@ -226,7 +229,7 @@ library RLPReader {
out := byte(0, mload(ptr))
}
require(out == 0 || out == 1, "RLPReader: Invalid RLP boolean value, must be 0 or 1");
require(out == 0 || out == 1, "RLPReader: invalid RLP boolean value, must be 0 or 1");
return out != 0;
}
......@@ -254,7 +257,7 @@ library RLPReader {
return address(0);
}
require(_in.length == 21, "Invalid RLP address value.");
require(_in.length == 21, "RLPReader: invalid RLP address value");
return address(uint160(readUint256(_in)));
}
......@@ -303,7 +306,7 @@ library RLPReader {
RLPItemType
)
{
require(_in.length > 0, "RLP item cannot be null.");
require(_in.length > 0, "RLPReader: RLP item cannot be null");
uint256 ptr = _in.ptr;
uint256 prefix;
......@@ -321,14 +324,14 @@ library RLPReader {
// slither-disable-next-line variable-scope
uint256 strLen = prefix - 0x80;
require(_in.length > strLen, "Invalid RLP short string.");
require(_in.length > strLen, "RLPReader: invalid RLP short string");
return (1, strLen, RLPItemType.DATA_ITEM);
} else if (prefix <= 0xbf) {
// Long string.
uint256 lenOfStrLen = prefix - 0xb7;
require(_in.length > lenOfStrLen, "Invalid RLP long string length.");
require(_in.length > lenOfStrLen, "RLPReader: invalid RLP long string length");
uint256 strLen;
assembly {
......@@ -336,7 +339,7 @@ library RLPReader {
strLen := div(mload(add(ptr, 1)), exp(256, sub(32, lenOfStrLen)))
}
require(_in.length > lenOfStrLen + strLen, "Invalid RLP long string.");
require(_in.length > lenOfStrLen + strLen, "RLPReader: invalid RLP long string");
return (1 + lenOfStrLen, strLen, RLPItemType.DATA_ITEM);
} else if (prefix <= 0xf7) {
......@@ -344,14 +347,14 @@ library RLPReader {
// slither-disable-next-line variable-scope
uint256 listLen = prefix - 0xc0;
require(_in.length > listLen, "Invalid RLP short list.");
require(_in.length > listLen, "RLPReader: invalid RLP short list");
return (1, listLen, RLPItemType.LIST_ITEM);
} else {
// Long list.
uint256 lenOfListLen = prefix - 0xf7;
require(_in.length > lenOfListLen, "Invalid RLP long list length.");
require(_in.length > lenOfListLen, "RLPReader: invalid RLP long list length");
uint256 listLen;
assembly {
......@@ -359,7 +362,7 @@ library RLPReader {
listLen := div(mload(add(ptr, 1)), exp(256, sub(32, lenOfListLen)))
}
require(_in.length > lenOfListLen + listLen, "Invalid RLP long list.");
require(_in.length > lenOfListLen + listLen, "RLPReader: invalid RLP long list");
return (1 + lenOfListLen, listLen, RLPItemType.LIST_ITEM);
}
......
......@@ -107,7 +107,7 @@ library MerkleTrie {
bool exists = keyRemainder.length == 0;
require(exists || isFinalNode, "Provided proof is invalid.");
require(exists || isFinalNode, "MerkleTrie: provided proof is invalid");
bytes memory value = exists ? _getNodeValue(proof[pathLength - 1]) : bytes("");
......@@ -158,18 +158,21 @@ library MerkleTrie {
if (currentKeyIndex == 0) {
// First proof element is always the root node.
require(keccak256(currentNode.encoded) == currentNodeID, "Invalid root hash");
require(
keccak256(currentNode.encoded) == currentNodeID,
"MerkleTrie: invalid root hash"
);
} else if (currentNode.encoded.length >= 32) {
// Nodes 32 bytes or larger are hashed inside branch nodes.
require(
keccak256(currentNode.encoded) == currentNodeID,
"Invalid large internal hash"
"MerkleTrie: invalid large internal hash"
);
} else {
// Nodes smaller than 31 bytes aren't hashed.
require(
bytes32(currentNode.encoded) == currentNodeID,
"Invalid internal node hash"
"MerkleTrie: invalid internal node hash"
);
}
......@@ -223,10 +226,10 @@ library MerkleTrie {
continue;
}
} else {
revert("Received a node with an unknown prefix");
revert("MerkleTrie: received a node with an unknown prefix");
}
} else {
revert("Received an unparseable node.");
revert("MerkleTrie: received an unparseable node");
}
}
......
......@@ -121,7 +121,7 @@ contract L1CrossDomainMessenger_Test is Messenger_Initializer {
}
function test_L1MessengerXDomainSenderReverts() external {
vm.expectRevert("xDomainMessageSender is not set");
vm.expectRevert("CrossDomainMessenger: xDomainMessageSender is not set");
L1Messenger.xDomainMessageSender();
}
......@@ -170,11 +170,11 @@ contract L1CrossDomainMessenger_Test is Messenger_Initializer {
bytes memory message = hex"1111";
vm.prank(address(op));
vm.expectRevert("Message cannot be replayed.");
vm.expectRevert("CrossDomainMessenger: message cannot be replayed");
L1Messenger.relayMessage(0, sender, target, 0, 0, message);
vm.store(address(op), 0, bytes32(abi.encode(sender)));
vm.expectRevert("Message cannot be replayed.");
vm.expectRevert("CrossDomainMessenger: message cannot be replayed");
L1Messenger.relayMessage(0, sender, target, 0, 0, message);
}
......@@ -185,14 +185,14 @@ contract L1CrossDomainMessenger_Test is Messenger_Initializer {
bytes memory message = hex"1111";
vm.expectRevert(
"CrossDomainMessenger: Value must be zero unless message is from a system address."
"CrossDomainMessenger: value must be zero unless message is from a system address"
);
L1Messenger.relayMessage{ value: 100 }(0, sender, target, 0, 0, message);
}
// relayMessage: the xDomainMessageSender is reset to the original value
function test_L1MessengerxDomainMessageSenderResets() external {
vm.expectRevert("xDomainMessageSender is not set");
vm.expectRevert("CrossDomainMessenger: xDomainMessageSender is not set");
L1Messenger.xDomainMessageSender();
address sender = PredeployAddresses.L2_CROSS_DOMAIN_MESSENGER;
......@@ -203,7 +203,7 @@ contract L1CrossDomainMessenger_Test is Messenger_Initializer {
vm.prank(address(op));
L1Messenger.relayMessage(0, address(0), address(0), 0, 0, hex"");
vm.expectRevert("xDomainMessageSender is not set");
vm.expectRevert("CrossDomainMessenger: xDomainMessageSender is not set");
L1Messenger.xDomainMessageSender();
}
......
......@@ -100,7 +100,7 @@ contract L1StandardBridge_Test is Bridge_Initializer {
// turn alice into a contract
vm.etch(alice, address(L1Token).code);
vm.expectRevert("Account not EOA");
vm.expectRevert("StandardBridge: function can only be called from an EOA");
vm.prank(alice);
L1Bridge.depositETH{ value: 1 }(300, hex"");
}
......@@ -207,7 +207,7 @@ contract L1StandardBridge_Test is Bridge_Initializer {
// turn alice into a contract
vm.etch(alice, hex"ffff");
vm.expectRevert("Account not EOA");
vm.expectRevert("StandardBridge: function can only be called from an EOA");
vm.prank(alice, alice);
L1Bridge.depositERC20(
address(0),
......@@ -363,7 +363,7 @@ contract L1StandardBridge_Test is Bridge_Initializer {
abi.encode(address(L1Bridge.otherBridge()))
);
vm.prank(address(28));
vm.expectRevert("Could not authenticate bridge message.");
vm.expectRevert("StandardBridge: function can only be called from the other bridge");
L1Bridge.finalizeERC20Withdrawal(
address(L1Token),
address(L2Token),
......@@ -381,7 +381,7 @@ contract L1StandardBridge_Test is Bridge_Initializer {
abi.encode(address(address(0)))
);
vm.prank(address(L1Bridge.messenger()));
vm.expectRevert("Could not authenticate bridge message.");
vm.expectRevert("StandardBridge: function can only be called from the other bridge");
L1Bridge.finalizeERC20Withdrawal(
address(L1Token),
address(L2Token),
......
......@@ -90,7 +90,7 @@ contract L2CrossDomainMessenger_Test is Messenger_Initializer {
}
function test_L2MessengerXDomainSenderReverts() external {
vm.expectRevert("xDomainMessageSender is not set");
vm.expectRevert("CrossDomainMessenger: xDomainMessageSender is not set");
L2Messenger.xDomainMessageSender();
}
......@@ -139,20 +139,20 @@ contract L2CrossDomainMessenger_Test is Messenger_Initializer {
bytes memory message = hex"1111";
vm.prank(caller);
vm.expectRevert("Message cannot be replayed.");
vm.expectRevert("CrossDomainMessenger: message cannot be replayed");
L1Messenger.relayMessage(0, sender, target, 0, 0, message);
}
// relayMessage: the xDomainMessageSender is reset to the original value
function test_L2MessengerxDomainMessageSenderResets() external {
vm.expectRevert("xDomainMessageSender is not set");
vm.expectRevert("CrossDomainMessenger: xDomainMessageSender is not set");
L2Messenger.xDomainMessageSender();
address caller = AddressAliasHelper.applyL1ToL2Alias(address(L1Messenger));
vm.prank(caller);
L2Messenger.relayMessage(0, address(0), address(0), 0, 0, hex"");
vm.expectRevert("xDomainMessageSender is not set");
vm.expectRevert("CrossDomainMessenger: xDomainMessageSender is not set");
L2Messenger.xDomainMessageSender();
}
......
......@@ -71,7 +71,7 @@ contract L2OutputOracleTest is L2OutputOracle_Initializer {
function test_computeL2Timestamp() external {
// reverts if timestamp is too low
vm.expectRevert(
"OutputOracle: Block number must be greater than or equal to the starting block number."
"L2OutputOracle: block number must be greater than or equal to starting block number"
);
oracle.computeL2Timestamp(startingBlockNumber - 1);
......@@ -104,10 +104,10 @@ contract L2OutputOracleTest is L2OutputOracle_Initializer {
oracle.changeProposer(newProposer);
vm.startPrank(owner);
vm.expectRevert("OutputOracle: new proposer is the zero address");
vm.expectRevert("L2OutputOracle: new proposer cannot be the zero address");
oracle.changeProposer(address(0));
vm.expectRevert("OutputOracle: proposer cannot be same as the owner");
vm.expectRevert("L2OutputOracle: proposer cannot be the same as the owner");
oracle.changeProposer(owner);
// Double check proposer has not changed.
......@@ -178,7 +178,7 @@ contract L2OutputOracleTest is L2OutputOracle_Initializer {
warpToProposeTime(nextBlockNumber);
vm.prank(address(128));
vm.expectRevert("OutputOracle: caller is not the proposer");
vm.expectRevert("L2OutputOracle: function can only be called by proposer");
oracle.proposeL2Output(nonZeroHash, nextBlockNumber, 0, 0);
}
......@@ -188,7 +188,7 @@ contract L2OutputOracleTest is L2OutputOracle_Initializer {
uint256 nextBlockNumber = oracle.nextBlockNumber();
warpToProposeTime(nextBlockNumber);
vm.prank(proposer);
vm.expectRevert("OutputOracle: Cannot submit empty L2 output.");
vm.expectRevert("L2OutputOracle: L2 output proposal cannot be the zero hash");
oracle.proposeL2Output(outputToPropose, nextBlockNumber, 0, 0);
}
......@@ -197,7 +197,7 @@ contract L2OutputOracleTest is L2OutputOracle_Initializer {
uint256 nextBlockNumber = oracle.nextBlockNumber();
warpToProposeTime(nextBlockNumber);
vm.prank(proposer);
vm.expectRevert("OutputOracle: Block number must be equal to next expected block number.");
vm.expectRevert("L2OutputOracle: block number must be equal to next expected block number");
oracle.proposeL2Output(nonZeroHash, nextBlockNumber - 1, 0, 0);
}
......@@ -207,7 +207,7 @@ contract L2OutputOracleTest is L2OutputOracle_Initializer {
uint256 nextTimestamp = oracle.computeL2Timestamp(nextBlockNumber);
vm.warp(nextTimestamp);
vm.prank(proposer);
vm.expectRevert("OutputOracle: Cannot propose L2 output in future.");
vm.expectRevert("L2OutputOracle: cannot propose L2 output in the future");
oracle.proposeL2Output(nonZeroHash, nextBlockNumber, 0, 0);
}
......@@ -217,7 +217,7 @@ contract L2OutputOracleTest is L2OutputOracle_Initializer {
uint256 nextBlockNumber = oracle.nextBlockNumber();
warpToProposeTime(nextBlockNumber);
vm.prank(proposer);
vm.expectRevert("OutputOracle: Blockhash does not match the hash at the expected height.");
vm.expectRevert("L2OutputOracle: blockhash does not match the hash at the expected height");
oracle.proposeL2Output(
nonZeroHash,
nextBlockNumber,
......@@ -241,7 +241,7 @@ contract L2OutputOracleTest is L2OutputOracle_Initializer {
vm.prank(proposer);
// This will fail when foundry no longer returns zerod block hashes
vm.expectRevert("OutputOracle: Blockhash does not match the hash at the expected height.");
vm.expectRevert("L2OutputOracle: blockhash does not match the hash at the expected height");
oracle.proposeL2Output(nonZeroHash, nextBlockNumber, l1BlockHash, l1BlockNumber - 1);
}
......@@ -307,7 +307,7 @@ contract L2OutputOracleTest is L2OutputOracle_Initializer {
vm.prank(owner);
vm.expectRevert(
"OutputOracle: The output root to delete does not match the latest output proposal."
"L2OutputOracle: output root to delete does not match the latest output proposal"
);
oracle.deleteL2Output(proposalToDelete);
}
......@@ -324,7 +324,7 @@ contract L2OutputOracleTest is L2OutputOracle_Initializer {
proposalToDelete.timestamp -= 1;
vm.prank(owner);
vm.expectRevert(
"OutputOracle: The timestamp to delete does not match the latest output proposal."
"L2OutputOracle: timestamp to delete does not match the latest output proposal"
);
oracle.deleteL2Output(proposalToDelete);
}
......
......@@ -50,7 +50,7 @@ contract L2StandardBridge_Test is Bridge_Initializer {
function test_cannotWithdrawEthWithoutSendingIt() external {
assertEq(address(messagePasser).balance, 0);
vm.expectRevert("ETH withdrawals must include sufficient ETH value.");
vm.expectRevert("L2StandardBridge: ETH withdrawals must include sufficient ETH value");
vm.prank(alice, alice);
L2Bridge.withdraw(
address(PredeployAddresses.LEGACY_ERC20_ETH),
......@@ -86,7 +86,7 @@ contract L2StandardBridge_Test is Bridge_Initializer {
// This contract has 100 L2Token
deal(address(L2Token), address(this), 100, true);
vm.expectRevert("Account not EOA");
vm.expectRevert("StandardBridge: function can only be called from an EOA");
L2Bridge.withdraw(
address(L2Token),
100,
......
......@@ -18,12 +18,12 @@ contract RLPReader_Test is CommonTest {
}
function test_readBoolInvalidValue() external {
vm.expectRevert("RLPReader: Invalid RLP boolean value, must be 0 or 1");
vm.expectRevert("RLPReader: invalid RLP boolean value, must be 0 or 1");
RLPReader.readBool(hex"02");
}
function test_readBoolLargeInput() external {
vm.expectRevert("Invalid RLP boolean value.");
vm.expectRevert("RLPReader: invalid RLP boolean value");
RLPReader.readBool(hex"0101");
}
......@@ -42,12 +42,12 @@ contract RLPReader_Test is CommonTest {
}
function test_readAddressTooLarge() external {
vm.expectRevert("Invalid RLP address value.");
vm.expectRevert("RLPReader: invalid RLP address value");
RLPReader.readAddress(hex"94121212121212121212121212121212121212121212121212");
}
function test_readAddressTooShort() external {
vm.expectRevert("Invalid RLP address value.");
vm.expectRevert("RLPReader: invalid RLP address value");
RLPReader.readAddress(hex"94121212121212121212121212");
}
......@@ -73,27 +73,27 @@ contract RLPReader_Test is CommonTest {
}
function test_readBytes_revertListItem() external {
vm.expectRevert("Invalid RLP bytes value.");
vm.expectRevert("RLPReader: invalid RLP bytes value");
RLPReader.readBytes(hex"c7c0c1c0c3c0c1c0");
}
function test_readBytes_invalidStringLength() external {
vm.expectRevert("Invalid RLP long string length.");
vm.expectRevert("RLPReader: invalid RLP long string length");
RLPReader.readBytes(hex"b9");
}
function test_readBytes_invalidListLength() external {
vm.expectRevert("Invalid RLP long list length.");
vm.expectRevert("RLPReader: invalid RLP long list length");
RLPReader.readBytes(hex"ff");
}
function test_readBytes32_revertOnList() external {
vm.expectRevert("Invalid RLP bytes32 value.");
vm.expectRevert("RLPReader: invalid RLP bytes32 value");
RLPReader.readBytes32(hex"c7c0c1c0c3c0c1c0");
}
function test_readBytes32_revertOnTooLong() external {
vm.expectRevert("Invalid RLP bytes32 value.");
vm.expectRevert("RLPReader: invalid RLP bytes32 value");
RLPReader.readBytes32(hex"11110000000000000000000000000000000000000000000000000000000000000000");
}
......@@ -273,62 +273,62 @@ contract RLPReader_Test is CommonTest {
}
function test_readList_invalidShortList() external {
vm.expectRevert("Invalid RLP short list.");
vm.expectRevert("RLPReader: invalid RLP short list");
RLPReader.readList(hex"efdebd");
}
function test_readList_longStringLength() external {
vm.expectRevert("Invalid RLP short list.");
vm.expectRevert("RLPReader: invalid RLP short list");
RLPReader.readList(hex"efb83600");
}
function test_readList_notLongEnough() external {
vm.expectRevert("Invalid RLP short list.");
vm.expectRevert("RLPReader: invalid RLP short list");
RLPReader.readList(hex"efdebdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
}
function test_readList_int32Overflow() external {
vm.expectRevert("Invalid RLP long string.");
vm.expectRevert("RLPReader: invalid RLP long string");
RLPReader.readList(hex"bf0f000000000000021111");
}
function test_readList_int32Overflow2() external {
vm.expectRevert("Invalid RLP long list.");
vm.expectRevert("RLPReader: invalid RLP long list");
RLPReader.readList(hex"ff0f000000000000021111");
}
function test_readList_incorrectLengthInArray() external {
vm.expectRevert("Invalid RLP list value.");
vm.expectRevert("RLPReader: invalid RLP list value");
RLPReader.readList(hex"b9002100dc2b275d0f74e8a53e6f4ec61b27f24278820be3f82ea2110e582081b0565df0");
}
function test_readList_leadingZerosInLongLengthArray1() external {
vm.expectRevert("Invalid RLP list value.");
vm.expectRevert("RLPReader: invalid RLP list value");
RLPReader.readList(hex"b90040000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f");
}
function test_readList_leadingZerosInLongLengthArray2() external {
vm.expectRevert("Invalid RLP list value.");
vm.expectRevert("RLPReader: invalid RLP list value");
RLPReader.readList(hex"b800");
}
function test_readList_leadingZerosInLongLengthList1() external {
vm.expectRevert("Provided RLP list exceeds max list length.");
vm.expectRevert("RLPReader: provided RLP list exceeds max list length");
RLPReader.readList(hex"fb00000040000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f");
}
function test_readList_nonOptimalLongLengthArray1() external {
vm.expectRevert("Invalid RLP list value.");
vm.expectRevert("RLPReader: invalid RLP list value");
RLPReader.readList(hex"b81000112233445566778899aabbccddeeff");
}
function test_readList_nonOptimalLongLengthArray2() external {
vm.expectRevert("Invalid RLP list value.");
vm.expectRevert("RLPReader: invalid RLP list value");
RLPReader.readList(hex"b801ff");
}
function test_readList_invalidValue() external {
vm.expectRevert("Invalid RLP short string.");
vm.expectRevert("RLPReader: invalid RLP short string");
RLPReader.readList(hex"91");
}
}
......@@ -105,7 +105,7 @@ contract ResourceMetering_Test is CommonTest {
function test_useMoreThanMaxReverts() external {
uint64 target = uint64(uint256(meter.TARGET_RESOURCE_LIMIT()));
uint64 elasticity = uint64(uint256(meter.ELASTICITY_MULTIPLIER()));
vm.expectRevert("OptimismPortal: cannot buy more gas than available gas limit");
vm.expectRevert("ResourceMetering: cannot buy more gas than available gas limit");
meter.use(target * elasticity + 1);
}
}
......@@ -61,7 +61,7 @@ contract SequencerFeeVault_Test is Bridge_Initializer {
assert(address(vault).balance < vault.MIN_WITHDRAWAL_AMOUNT());
vm.expectRevert(
"OVM_SequencerFeeVault: withdrawal amount must be greater than minimum withdrawal amount"
"SequencerFeeVault: withdrawal amount must be greater than minimum withdrawal amount"
);
vault.withdraw();
}
......
......@@ -169,7 +169,10 @@ abstract contract CrossDomainMessenger is
* @return Address of the sender of the currently executing message on the other chain.
*/
function xDomainMessageSender() external view returns (address) {
require(xDomainMsgSender != DEFAULT_XDOMAIN_SENDER, "xDomainMessageSender is not set");
require(
xDomainMsgSender != DEFAULT_XDOMAIN_SENDER,
"CrossDomainMessenger: xDomainMessageSender is not set"
);
return xDomainMsgSender;
}
......@@ -276,25 +279,32 @@ abstract contract CrossDomainMessenger is
if (_isOtherMessenger()) {
// Should never happen.
require(msg.value == _value, "Mismatched message value.");
require(msg.value == _value, "CrossDomainMessenger: mismatched message value");
} else {
require(
msg.value == 0,
"CrossDomainMessenger: Value must be zero unless message is from a system address."
"CrossDomainMessenger: value must be zero unless message is from a system address"
);
require(
receivedMessages[versionedHash],
"CrossDomainMessenger: message cannot be replayed"
);
require(receivedMessages[versionedHash], "Message cannot be replayed.");
}
require(
blockedSystemAddresses[_target] == false,
"Cannot send message to blocked system address."
"CrossDomainMessenger: cannot send message to blocked system address"
);
require(successfulMessages[versionedHash] == false, "Message has already been relayed.");
require(
successfulMessages[versionedHash] == false,
"CrossDomainMessenger: message has already been relayed"
);
require(
gasleft() >= _minGasLimit + RELAY_GAS_REQUIRED,
"Insufficient gas to relay message."
"CrossDomainMessenger: insufficient gas to relay message"
);
xDomainMsgSender = _sender;
......
......@@ -88,11 +88,6 @@ contract OptimismMintableERC20Factory {
"OptimismMintableERC20Factory: must provide remote token address"
);
require(
bridge != address(0),
"OptimismMintableERC20Factory: must initialize contract first"
);
OptimismMintableERC20 localToken = new OptimismMintableERC20(
bridge,
_remoteToken,
......
......@@ -130,7 +130,10 @@ abstract contract StandardBridge is Initializable {
* just trying to prevent users accidentally depositing with smart contract wallets.
*/
modifier onlyEOA() {
require(!Address.isContract(msg.sender), "Account not EOA");
require(
!Address.isContract(msg.sender),
"StandardBridge: function can only be called from an EOA"
);
_;
}
......@@ -141,7 +144,7 @@ abstract contract StandardBridge is Initializable {
require(
msg.sender == address(messenger) &&
messenger.xDomainMessageSender() == address(otherBridge),
"Could not authenticate bridge message."
"StandardBridge: function can only be called from the other bridge"
);
_;
}
......@@ -150,7 +153,7 @@ abstract contract StandardBridge is Initializable {
* @notice Ensures that the caller is this contract.
*/
modifier onlySelf() {
require(msg.sender == address(this), "Function can only be called by self.");
require(msg.sender == address(this), "StandardBridge: function can only be called by self");
_;
}
......@@ -277,12 +280,12 @@ abstract contract StandardBridge is Initializable {
uint256 _amount,
bytes calldata _extraData
) public payable onlyOtherBridge {
require(msg.value == _amount, "Amount sent does not match amount required.");
require(_to != address(this), "Cannot send to self.");
require(msg.value == _amount, "StandardBridge: amount sent does not match amount required");
require(_to != address(this), "StandardBridge: cannot send to self");
emit ETHBridgeFinalized(_from, _to, _amount, _extraData);
(bool success, ) = _to.call{ value: _amount }(new bytes(0));
require(success, "ETH transfer failed.");
require(success, "StandardBridge: ETH transfer failed");
}
/**
......@@ -348,12 +351,12 @@ abstract contract StandardBridge is Initializable {
) public onlySelf {
// Make sure external function calls can't be used to trigger calls to
// completeOutboundTransfer. We only make external (write) calls to _localToken.
require(_localToken != address(this), "Local token cannot be self");
require(_localToken != address(this), "StandardBridge: local token cannot be self");
if (_isOptimismMintableERC20(_localToken)) {
require(
_isCorrectTokenPair(_localToken, _remoteToken),
"Wrong remote token for Optimism Mintable ERC20 local token"
"StandardBridge: wrong remote token for Optimism Mintable ERC20 local token"
);
OptimismMintableERC20(_localToken).mint(_to, _amount);
......@@ -434,12 +437,12 @@ abstract contract StandardBridge is Initializable {
) internal {
// Make sure external function calls can't be used to trigger calls to
// completeOutboundTransfer. We only make external (write) calls to _localToken.
require(_localToken != address(this), "Local token cannot be self");
require(_localToken != address(this), "StandardBridge: local token cannot be self");
if (_isOptimismMintableERC20(_localToken)) {
require(
_isCorrectTokenPair(_localToken, _remoteToken),
"Wrong remote token for Optimism Mintable ERC20 local token"
"StandardBridge: wrong remote token for Optimism Mintable ERC20 local token"
);
OptimismMintableERC20(_localToken).burn(_from, _amount);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment