{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"MESSAGE_VERSION","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MIN_GAS_CALLDATA_OVERHEAD","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"MIN_GAS_DYNAMIC_OVERHEAD_DENOMINATOR","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"MIN_GAS_DYNAMIC_OVERHEAD_NUMERATOR","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"OTHER_MESSENGER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract CrossDomainMessenger"}],"stateMutability":"view"},{"type":"function","name":"PORTAL","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract OptimismPortal"}],"stateMutability":"view"},{"type":"function","name":"RELAY_CALL_OVERHEAD","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"RELAY_CONSTANT_OVERHEAD","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"RELAY_GAS_CHECK_BUFFER","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"RELAY_GAS_CHECK_BUFFER_INCLUDING_APPROVAL","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"RELAY_RESERVED_GAS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"baseGas","inputs":[{"name":"_message","type":"bytes","internalType":"bytes"},{"name":"_minGasLimit","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"pure"},{"type":"function","name":"failedMessages","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_superchainConfig","type":"address","internalType":"contract SuperchainConfig"},{"name":"_portal","type":"address","internalType":"contract OptimismPortal"},{"name":"_systemConfig","type":"address","internalType":"contract SystemConfig"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"messageNonce","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"nativeTokenAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"onApprove","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"otherMessenger","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract CrossDomainMessenger"}],"stateMutability":"view"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"portal","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract OptimismPortal"}],"stateMutability":"view"},{"type":"function","name":"relayMessage","inputs":[{"name":"_nonce","type":"uint256","internalType":"uint256"},{"name":"_sender","type":"address","internalType":"address"},{"name":"_target","type":"address","internalType":"address"},{"name":"_value","type":"uint256","internalType":"uint256"},{"name":"_minGasLimit","type":"uint256","internalType":"uint256"},{"name":"_message","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"sendMessage","inputs":[{"name":"_target","type":"address","internalType":"address"},{"name":"_message","type":"bytes","internalType":"bytes"},{"name":"_minGasLimit","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"sendNativeTokenMessage","inputs":[{"name":"_target","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_message","type":"bytes","internalType":"bytes"},{"name":"_minGasLimit","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"successfulMessages","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"superchainConfig","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract SuperchainConfig"}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"systemConfig","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract SystemConfig"}],"stateMutability":"view"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"xDomainMessageSender","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"FailedRelayedMessage","inputs":[{"name":"msgHash","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"RelayedMessage","inputs":[{"name":"msgHash","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"SentMessage","inputs":[{"name":"target","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"message","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"messageNonce","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"gasLimit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SentMessageExtension1","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b50620000206000808062000026565b6200028e565b600054600160a81b900460ff16158080156200004f57506000546001600160a01b90910460ff16105b806200008657506200006c30620001c860201b620019421760201c565b158015620000865750600054600160a01b900460ff166001145b620000ef5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff60a01b1916600160a01b17905580156200011d576000805460ff60a81b1916600160a81b1790555b60fb80546001600160a01b038087166001600160a01b03199283161790925560fc805486841690831617905560fd80549285169290911691909117905562000179734200000000000000000000000000000000000007620001d7565b8015620001c2576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6001600160a01b03163b151590565b600054600160a81b900460ff16620002465760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620000e6565b60cc546001600160a01b03166200026c5760cc80546001600160a01b03191661dead1790555b60cf80546001600160a01b0319166001600160a01b0392909216919091179055565b612cf2806200029e6000396000f3fe6080604052600436106101c25760003560e01c80635c975abb116100f7578063a4e7f8bd11610095578063d764ad0b11610064578063d764ad0b14610527578063db505d801461053a578063e0e593c514610567578063ecc704281461058757600080fd5b8063a4e7f8bd14610487578063b1b1b209146104b7578063b28ade25146104e7578063c0c53b8b1461050757600080fd5b80637f87f520116100d15780637f87f5201461035757806383a74074146104455780638cbeeef2146103575780639fce812c1461045c57600080fd5b80635c975abb146103ee5780636425666b146104035780636e296e451461043057600080fd5b80633dbb202b116101645780634c1d6a691161013e5780634c1d6a69146103575780634d0047ee1461036d57806354fd4d50146103825780635644cfdf146103d857600080fd5b80633dbb202b146102fa5780633f827a5a1461030f5780634273ca161461033757600080fd5b80630ff754ea116101a05780630ff754ea1461023f5780632828d7e81461028b57806333d7e2bd146102a057806335e80ab3146102cd57600080fd5b806301ffc9a7146101c7578063028f85f7146101fc5780630c5684981461022a575b600080fd5b3480156101d357600080fd5b506101e76101e23660046125a6565b6105ec565b60405190151581526020015b60405180910390f35b34801561020857600080fd5b50610211601081565b60405167ffffffffffffffff90911681526020016101f3565b34801561023657600080fd5b50610211603f81565b34801561024b57600080fd5b5060fc5473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101f3565b34801561029757600080fd5b50610211604081565b3480156102ac57600080fd5b5060fd546102669073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102d957600080fd5b5060fb546102669073ffffffffffffffffffffffffffffffffffffffff1681565b61030d61030836600461266f565b610685565b005b34801561031b57600080fd5b50610324600181565b60405161ffff90911681526020016101f3565b34801561034357600080fd5b506101e76103523660046126d6565b6108e2565b34801561036357600080fd5b50610211619c4081565b34801561037957600080fd5b506102666109e1565b34801561038e57600080fd5b506103cb6040518060400160405280600581526020017f322e342e3000000000000000000000000000000000000000000000000000000081525081565b6040516101f391906127bf565b3480156103e457600080fd5b5061021161138881565b3480156103fa57600080fd5b506101e76109f0565b34801561040f57600080fd5b5060fc546102669073ffffffffffffffffffffffffffffffffffffffff1681565b34801561043c57600080fd5b50610266610a84565b34801561045157600080fd5b5061021162030d4081565b34801561046857600080fd5b5060cf5473ffffffffffffffffffffffffffffffffffffffff16610266565b34801561049357600080fd5b506101e76104a23660046127d2565b60ce6020526000908152604090205460ff1681565b3480156104c357600080fd5b506101e76104d23660046127d2565b60cb6020526000908152604090205460ff1681565b3480156104f357600080fd5b506102116105023660046127eb565b610b6b565b34801561051357600080fd5b5061030d61052236600461283f565b610bdb565b61030d61053536600461288a565b610e52565b34801561054657600080fd5b5060cf546102669073ffffffffffffffffffffffffffffffffffffffff1681565b34801561057357600080fd5b5061030d610582366004612910565b61192d565b34801561059357600080fd5b506105de60cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b6040519081526020016101f3565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4273ca1600000000000000000000000000000000000000000000000000000000148061067f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60cf546107b79073ffffffffffffffffffffffffffffffffffffffff166106ad858585610b6b565b347fd764ad0b0000000000000000000000000000000000000000000000000000000061071960cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b338a34898c8c60405160240161073597969594939291906129ca565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261195e565b8373ffffffffffffffffffffffffffffffffffffffff167fcb0f7ffd78f9aee47a248fae8db181db6eee833039123e026dcbff529522e52a33858561083c60cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b8660405161084e959493929190612a29565b60405180910390a260405134815233907f8ebb2ec2465bdb2a06a66fc37a0963af8a2a6a1479d81d56fdb8cbb98096d5469060200160405180910390a2505060cd80547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808216600101167fffff0000000000000000000000000000000000000000000000000000000000009091161790555050565b60006108ec611a5f565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f6f6e6c7920616363657074206e617469766520746f6b656e20617070726f766560448201527f2063616c6c6261636b000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6000803660006109bb8787611af3565b93509350935093506109d18a858a868686611bc5565b5060019998505050505050505050565b60006109eb611a5f565b905090565b60fb54604080517f5c975abb000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691635c975abb9160048083019260209291908290030181865afa158015610a60573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109eb9190612a77565b60cc5460009073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff215301610b4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f43726f7373446f6d61696e4d657373656e6765723a2078446f6d61696e4d657360448201527f7361676553656e646572206973206e6f7420736574000000000000000000000060648201526084016109a2565b5060cc5473ffffffffffffffffffffffffffffffffffffffff1690565b6000611388619c4080603f610b87604063ffffffff8816612ac8565b610b919190612af8565b610b9c601088612ac8565b610ba99062030d40612b46565b610bb39190612b46565b610bbd9190612b46565b610bc79190612b46565b610bd19190612b46565b90505b9392505050565b6000547501000000000000000000000000000000000000000000900460ff1615808015610c26575060005460017401000000000000000000000000000000000000000090910460ff16105b80610c585750303b158015610c58575060005474010000000000000000000000000000000000000000900460ff166001145b610ce4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016109a2565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790558015610d6a57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790555b60fb805473ffffffffffffffffffffffffffffffffffffffff8087167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560fc805486841690831617905560fd805492851692909116919091179055610de9734200000000000000000000000000000000000007611e91565b8015610e4c57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b610e5a6109f0565b15610ec1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4c312043726f7373446f6d61696e4d657373656e6765723a207061757365640060448201526064016109a2565b3415610f4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f43726f7373446f6d61696e4d657373656e6765723a2076616c7565206d75737460448201527f206265207a65726f00000000000000000000000000000000000000000000000060648201526084016109a2565b60f087901c6002811061100a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f43726f7373446f6d61696e4d657373656e6765723a206f6e6c7920766572736960448201527f6f6e2030206f722031206d657373616765732061726520737570706f7274656460648201527f20617420746869732074696d6500000000000000000000000000000000000000608482015260a4016109a2565b8061ffff166000036110ff57600061105b878986868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508f9250611fcd915050565b600081815260cb602052604090205490915060ff16156110fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f43726f7373446f6d61696e4d657373656e6765723a206c65676163792077697460448201527f6864726177616c20616c72656164792072656c6179656400000000000000000060648201526084016109a2565b505b6000611145898989898989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611fec92505050565b90506000611151611a5f565b905061115b61200f565b156111b257600082815260ce602052604090205460ff161561117f5761117f612b72565b86156111ad5760fc546111ad9073ffffffffffffffffffffffffffffffffffffffff8381169116308a6120eb565b611250565b600082815260ce602052604090205460ff16611250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f43726f7373446f6d61696e4d657373656e6765723a206d65737361676520636160448201527f6e6e6f74206265207265706c617965640000000000000000000000000000000060648201526084016109a2565b61125988612180565b15801561129257508073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b611344576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605960248201527f43726f7373446f6d61696e4d657373656e6765723a2063616e6e6f742073656e60448201527f64206d65737361676520746f20626c6f636b65642073797374656d206164647260648201527f657373206f72206e6174697665546f6b656e4164647265737300000000000000608482015260a4016109a2565b600082815260cb602052604090205460ff16156113e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f43726f7373446f6d61696e4d657373656e6765723a206d65737361676520686160448201527f7320616c7265616479206265656e2072656c617965640000000000000000000060648201526084016109a2565b611402866113f3619c4080612b46565b67ffffffffffffffff166121c3565b1580611428575060cc5473ffffffffffffffffffffffffffffffffffffffff1661dead14155b1561154257600082815260ce602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555183917f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f91a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff320161153a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f43726f7373446f6d61696e4d657373656e6765723a206661696c656420746f2060448201527f72656c6179206d6573736167650000000000000000000000000000000000000060648201526084016109a2565b505050611924565b60cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8b1617905586158015906115a6575073ffffffffffffffffffffffffffffffffffffffff881615155b15611646576040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301526024820189905282169063095ea7b3906044016020604051808303816000875af1158015611620573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116449190612a77565b505b600061169889619c405a61165a9190612ba1565b600089898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121e192505050565b905087158015906116be575073ffffffffffffffffffffffffffffffffffffffff891615155b1561175e576040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301526000602483015283169063095ea7b3906044016020604051808303816000875af1158015611738573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175c9190612a77565b505b60cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055801561181257600083815260cb602052604090205460ff16156117af576117af612b72565b600083815260cb602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555184917f4641df4a962071e12719d8c8c8e5ac7fc4d97b927346a3d7a335b1f7517e133c91a261191f565b600083815260ce602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555184917f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f91a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff320161191f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f43726f7373446f6d61696e4d657373656e6765723a206661696c656420746f2060448201527f72656c6179206d6573736167650000000000000000000000000000000000000060648201526084016109a2565b505050505b50505050505050565b61193b338686848787611bc5565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b34156119c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f44656e79206465706f736974696e67204554480000000000000000000000000060448201526064016109a2565b60fc546040517fb9e5595800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b9e5595890611a279087908690819089906000908990600401612bb8565b600060405180830381600087803b158015611a4157600080fd5b505af1158015611a55573d6000803e3d6000fd5b5050505050505050565b60fd54604080517f4d0047ee000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691634d0047ee9160048083019260209291908290030181865afa158015611acf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109eb9190612c17565b60008036816018851015611b89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f496e76616c6964206f6e417070726f7665206461746120666f72204c3143726f60448201527f7373446f6d61696e4d657373656e67657200000000000000000000000000000060648201526084016109a2565b505050823560601c93601484013560e01c93601801927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8019150565b8315611c99576000611bd5611a5f565b9050611bf973ffffffffffffffffffffffffffffffffffffffff82168830886120eb565b60fc546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018790529082169063095ea7b3906044016020604051808303816000875af1158015611c72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c969190612a77565b50505b60cf54611d499073ffffffffffffffffffffffffffffffffffffffff16611cc1848487610b6b565b867fd764ad0b00000000000000000000000000000000000000000000000000000000611d2d60cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b8b8b8b8b8b8b60405160240161073597969594939291906129ca565b8473ffffffffffffffffffffffffffffffffffffffff167fcb0f7ffd78f9aee47a248fae8db181db6eee833039123e026dcbff529522e52a878484611dce60cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b88604051611de0959493929190612a29565b60405180910390a28573ffffffffffffffffffffffffffffffffffffffff167f8ebb2ec2465bdb2a06a66fc37a0963af8a2a6a1479d81d56fdb8cbb98096d54685604051611e3091815260200190565b60405180910390a2505060cd80547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808216600101167fffff00000000000000000000000000000000000000000000000000000000000090911617905550505050565b6000547501000000000000000000000000000000000000000000900460ff16611f3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016109a2565b60cc5473ffffffffffffffffffffffffffffffffffffffff16611f865760cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead1790555b60cf80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000611fdb858585856121fb565b805190602001209050949350505050565b6000611ffc878787878787612294565b8051906020012090509695505050505050565b60fc5460009073ffffffffffffffffffffffffffffffffffffffff16331480156109eb575060cf5460fc54604080517f9bf62d82000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9384169390921691639bf62d82916004808201926020929091908290030181865afa1580156120ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120cf9190612c17565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610e4c908590612333565b600073ffffffffffffffffffffffffffffffffffffffff821630148061067f57505060fc5473ffffffffffffffffffffffffffffffffffffffff90811691161490565b600080603f83619c4001026040850201603f5a021015949350505050565b600080600080845160208601878a8af19695505050505050565b6060848484846040516024016122149493929190612c34565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fcbd4ece9000000000000000000000000000000000000000000000000000000001790529050949350505050565b60608686868686866040516024016122b196959493929190612c7e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd764ad0b0000000000000000000000000000000000000000000000000000000017905290509695505050505050565b6000612395826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166124449092919063ffffffff16565b80519091501561243f57808060200190518101906123b39190612a77565b61243f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016109a2565b505050565b6060610bd184846000858573ffffffffffffffffffffffffffffffffffffffff85163b6124cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016109a2565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516124f69190612cc9565b60006040518083038185875af1925050503d8060008114612533576040519150601f19603f3d011682016040523d82523d6000602084013e612538565b606091505b5091509150612548828286612553565b979650505050505050565b60608315612562575081610bd4565b8251156125725782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a291906127bf565b6000602082840312156125b857600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610bd457600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461260a57600080fd5b50565b60008083601f84011261261f57600080fd5b50813567ffffffffffffffff81111561263757600080fd5b60208301915083602082850101111561264f57600080fd5b9250929050565b803563ffffffff8116811461266a57600080fd5b919050565b6000806000806060858703121561268557600080fd5b8435612690816125e8565b9350602085013567ffffffffffffffff8111156126ac57600080fd5b6126b88782880161260d565b90945092506126cb905060408601612656565b905092959194509250565b6000806000806000608086880312156126ee57600080fd5b85356126f9816125e8565b94506020860135612709816125e8565b935060408601359250606086013567ffffffffffffffff81111561272c57600080fd5b6127388882890161260d565b969995985093965092949392505050565b60005b8381101561276457818101518382015260200161274c565b83811115610e4c5750506000910152565b6000815180845261278d816020860160208601612749565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610bd46020830184612775565b6000602082840312156127e457600080fd5b5035919050565b60008060006040848603121561280057600080fd5b833567ffffffffffffffff81111561281757600080fd5b6128238682870161260d565b9094509250612836905060208501612656565b90509250925092565b60008060006060848603121561285457600080fd5b833561285f816125e8565b9250602084013561286f816125e8565b9150604084013561287f816125e8565b809150509250925092565b600080600080600080600060c0888a0312156128a557600080fd5b8735965060208801356128b7816125e8565b955060408801356128c7816125e8565b9450606088013593506080880135925060a088013567ffffffffffffffff8111156128f157600080fd5b6128fd8a828b0161260d565b989b979a50959850939692959293505050565b60008060008060006080868803121561292857600080fd5b8535612933816125e8565b945060208601359350604086013567ffffffffffffffff81111561295657600080fd5b6129628882890161260d565b9094509250612975905060608701612656565b90509295509295909350565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b878152600073ffffffffffffffffffffffffffffffffffffffff808916602084015280881660408401525085606083015263ffffffff8516608083015260c060a0830152612a1c60c083018486612981565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff86168152608060208201526000612a59608083018688612981565b905083604083015263ffffffff831660608301529695505050505050565b600060208284031215612a8957600080fd5b81518015158114610bd457600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff80831681851681830481118215151615612aef57612aef612a99565b02949350505050565b600067ffffffffffffffff80841680612b3a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910492915050565b600067ffffffffffffffff808316818516808303821115612b6957612b69612a99565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b600082821015612bb357612bb3612a99565b500390565b73ffffffffffffffffffffffffffffffffffffffff8716815285602082015284604082015267ffffffffffffffff84166060820152821515608082015260c060a08201526000612c0b60c0830184612775565b98975050505050505050565b600060208284031215612c2957600080fd5b8151610bd4816125e8565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060806040830152612c6d6080830185612775565b905082606083015295945050505050565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a0830152612c0b60c0830184612775565b60008251612cdb818460208701612749565b919091019291505056fea164736f6c634300080f000a","sourceMap":"1180:14256:141:-:0;;;1808:248;;;;;;;;;-1:-1:-1;1855:194:141::1;1924:1;::::0;;1855:10:::1;:194::i;:::-;1180:14256:::0;;2360:412;3111:19:32;3134:13;-1:-1:-1;;;3134:13:32;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:32;;3212:1;-1:-1:-1;;;3197:12:32;;;;;:16;3179:34;3178:108;;;;3220:44;3258:4;3220:29;;;;;:44;;:::i;:::-;3219:45;:66;;;;-1:-1:-1;3268:12:32;;-1:-1:-1;;;3268:12:32;;;;3284:1;3268:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:32;;216:2:416;3157:201:32;;;198:21:416;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:416;;;338:44;399:19;;3157:201:32;;;;;;;;;3368:12;:16;;-1:-1:-1;;;;3368:16:32;-1:-1:-1;;;3368:16:32;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;;;3428:20:32;-1:-1:-1;;;3428:20:32;;;3394:65;2547:16:141::1;:36:::0;;-1:-1:-1;;;;;2547:36:141;;::::1;-1:-1:-1::0;;;;;;2547:36:141;;::::1;;::::0;;;2593:6:::1;:16:::0;;;;::::1;::::0;;::::1;;::::0;;2619:12:::1;:28:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;2657:108:::1;1491:42:222;2657:27:141;:108::i;:::-;3483:14:32::0;3479:99;;;3529:5;3513:21;;-1:-1:-1;;;;3513:21:32;;;3553:14;;-1:-1:-1;581:36:416;;3553:14:32;;569:2:416;554:18;3553:14:32;;;;;;;3479:99;3101:483;2360:412:141;;;:::o;1186:320:38:-;-1:-1:-1;;;;;1476:19:38;;:23;;;1186:320::o;18772:636:267:-;4910:13:32;;-1:-1:-1;;;4910:13:32;;;;4902:69;;;;-1:-1:-1;;;4902:69:32;;830:2:416;4902:69:32;;;812:21:416;869:2;849:18;;;842:30;908:34;888:18;;;881:62;-1:-1:-1;;;959:18:416;;;952:41;1010:19;;4902:69:32;628:407:416;4902:69:32;19257:16:267::1;::::0;-1:-1:-1;;;;;19257:16:267::1;19253:107;;19303:16;:46:::0;;-1:-1:-1;;;;;;19303:46:267::1;1338:42:215;19303:46:267;::::0;;19253:107:::1;19369:14;:32:::0;;-1:-1:-1;;;;;;19369:32:267::1;-1:-1:-1::0;;;;;19369:32:267;;;::::1;::::0;;;::::1;::::0;;18772:636::o;628:407:416:-;1180:14256:141;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101c25760003560e01c80635c975abb116100f7578063a4e7f8bd11610095578063d764ad0b11610064578063d764ad0b14610527578063db505d801461053a578063e0e593c514610567578063ecc704281461058757600080fd5b8063a4e7f8bd14610487578063b1b1b209146104b7578063b28ade25146104e7578063c0c53b8b1461050757600080fd5b80637f87f520116100d15780637f87f5201461035757806383a74074146104455780638cbeeef2146103575780639fce812c1461045c57600080fd5b80635c975abb146103ee5780636425666b146104035780636e296e451461043057600080fd5b80633dbb202b116101645780634c1d6a691161013e5780634c1d6a69146103575780634d0047ee1461036d57806354fd4d50146103825780635644cfdf146103d857600080fd5b80633dbb202b146102fa5780633f827a5a1461030f5780634273ca161461033757600080fd5b80630ff754ea116101a05780630ff754ea1461023f5780632828d7e81461028b57806333d7e2bd146102a057806335e80ab3146102cd57600080fd5b806301ffc9a7146101c7578063028f85f7146101fc5780630c5684981461022a575b600080fd5b3480156101d357600080fd5b506101e76101e23660046125a6565b6105ec565b60405190151581526020015b60405180910390f35b34801561020857600080fd5b50610211601081565b60405167ffffffffffffffff90911681526020016101f3565b34801561023657600080fd5b50610211603f81565b34801561024b57600080fd5b5060fc5473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101f3565b34801561029757600080fd5b50610211604081565b3480156102ac57600080fd5b5060fd546102669073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102d957600080fd5b5060fb546102669073ffffffffffffffffffffffffffffffffffffffff1681565b61030d61030836600461266f565b610685565b005b34801561031b57600080fd5b50610324600181565b60405161ffff90911681526020016101f3565b34801561034357600080fd5b506101e76103523660046126d6565b6108e2565b34801561036357600080fd5b50610211619c4081565b34801561037957600080fd5b506102666109e1565b34801561038e57600080fd5b506103cb6040518060400160405280600581526020017f322e342e3000000000000000000000000000000000000000000000000000000081525081565b6040516101f391906127bf565b3480156103e457600080fd5b5061021161138881565b3480156103fa57600080fd5b506101e76109f0565b34801561040f57600080fd5b5060fc546102669073ffffffffffffffffffffffffffffffffffffffff1681565b34801561043c57600080fd5b50610266610a84565b34801561045157600080fd5b5061021162030d4081565b34801561046857600080fd5b5060cf5473ffffffffffffffffffffffffffffffffffffffff16610266565b34801561049357600080fd5b506101e76104a23660046127d2565b60ce6020526000908152604090205460ff1681565b3480156104c357600080fd5b506101e76104d23660046127d2565b60cb6020526000908152604090205460ff1681565b3480156104f357600080fd5b506102116105023660046127eb565b610b6b565b34801561051357600080fd5b5061030d61052236600461283f565b610bdb565b61030d61053536600461288a565b610e52565b34801561054657600080fd5b5060cf546102669073ffffffffffffffffffffffffffffffffffffffff1681565b34801561057357600080fd5b5061030d610582366004612910565b61192d565b34801561059357600080fd5b506105de60cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b6040519081526020016101f3565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4273ca1600000000000000000000000000000000000000000000000000000000148061067f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60cf546107b79073ffffffffffffffffffffffffffffffffffffffff166106ad858585610b6b565b347fd764ad0b0000000000000000000000000000000000000000000000000000000061071960cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b338a34898c8c60405160240161073597969594939291906129ca565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261195e565b8373ffffffffffffffffffffffffffffffffffffffff167fcb0f7ffd78f9aee47a248fae8db181db6eee833039123e026dcbff529522e52a33858561083c60cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b8660405161084e959493929190612a29565b60405180910390a260405134815233907f8ebb2ec2465bdb2a06a66fc37a0963af8a2a6a1479d81d56fdb8cbb98096d5469060200160405180910390a2505060cd80547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808216600101167fffff0000000000000000000000000000000000000000000000000000000000009091161790555050565b60006108ec611a5f565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f6f6e6c7920616363657074206e617469766520746f6b656e20617070726f766560448201527f2063616c6c6261636b000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6000803660006109bb8787611af3565b93509350935093506109d18a858a868686611bc5565b5060019998505050505050505050565b60006109eb611a5f565b905090565b60fb54604080517f5c975abb000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691635c975abb9160048083019260209291908290030181865afa158015610a60573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109eb9190612a77565b60cc5460009073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff215301610b4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f43726f7373446f6d61696e4d657373656e6765723a2078446f6d61696e4d657360448201527f7361676553656e646572206973206e6f7420736574000000000000000000000060648201526084016109a2565b5060cc5473ffffffffffffffffffffffffffffffffffffffff1690565b6000611388619c4080603f610b87604063ffffffff8816612ac8565b610b919190612af8565b610b9c601088612ac8565b610ba99062030d40612b46565b610bb39190612b46565b610bbd9190612b46565b610bc79190612b46565b610bd19190612b46565b90505b9392505050565b6000547501000000000000000000000000000000000000000000900460ff1615808015610c26575060005460017401000000000000000000000000000000000000000090910460ff16105b80610c585750303b158015610c58575060005474010000000000000000000000000000000000000000900460ff166001145b610ce4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016109a2565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790558015610d6a57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790555b60fb805473ffffffffffffffffffffffffffffffffffffffff8087167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560fc805486841690831617905560fd805492851692909116919091179055610de9734200000000000000000000000000000000000007611e91565b8015610e4c57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b610e5a6109f0565b15610ec1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4c312043726f7373446f6d61696e4d657373656e6765723a207061757365640060448201526064016109a2565b3415610f4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f43726f7373446f6d61696e4d657373656e6765723a2076616c7565206d75737460448201527f206265207a65726f00000000000000000000000000000000000000000000000060648201526084016109a2565b60f087901c6002811061100a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f43726f7373446f6d61696e4d657373656e6765723a206f6e6c7920766572736960448201527f6f6e2030206f722031206d657373616765732061726520737570706f7274656460648201527f20617420746869732074696d6500000000000000000000000000000000000000608482015260a4016109a2565b8061ffff166000036110ff57600061105b878986868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508f9250611fcd915050565b600081815260cb602052604090205490915060ff16156110fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f43726f7373446f6d61696e4d657373656e6765723a206c65676163792077697460448201527f6864726177616c20616c72656164792072656c6179656400000000000000000060648201526084016109a2565b505b6000611145898989898989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611fec92505050565b90506000611151611a5f565b905061115b61200f565b156111b257600082815260ce602052604090205460ff161561117f5761117f612b72565b86156111ad5760fc546111ad9073ffffffffffffffffffffffffffffffffffffffff8381169116308a6120eb565b611250565b600082815260ce602052604090205460ff16611250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f43726f7373446f6d61696e4d657373656e6765723a206d65737361676520636160448201527f6e6e6f74206265207265706c617965640000000000000000000000000000000060648201526084016109a2565b61125988612180565b15801561129257508073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b611344576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605960248201527f43726f7373446f6d61696e4d657373656e6765723a2063616e6e6f742073656e60448201527f64206d65737361676520746f20626c6f636b65642073797374656d206164647260648201527f657373206f72206e6174697665546f6b656e4164647265737300000000000000608482015260a4016109a2565b600082815260cb602052604090205460ff16156113e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f43726f7373446f6d61696e4d657373656e6765723a206d65737361676520686160448201527f7320616c7265616479206265656e2072656c617965640000000000000000000060648201526084016109a2565b611402866113f3619c4080612b46565b67ffffffffffffffff166121c3565b1580611428575060cc5473ffffffffffffffffffffffffffffffffffffffff1661dead14155b1561154257600082815260ce602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555183917f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f91a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff320161153a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f43726f7373446f6d61696e4d657373656e6765723a206661696c656420746f2060448201527f72656c6179206d6573736167650000000000000000000000000000000000000060648201526084016109a2565b505050611924565b60cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8b1617905586158015906115a6575073ffffffffffffffffffffffffffffffffffffffff881615155b15611646576040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301526024820189905282169063095ea7b3906044016020604051808303816000875af1158015611620573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116449190612a77565b505b600061169889619c405a61165a9190612ba1565b600089898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121e192505050565b905087158015906116be575073ffffffffffffffffffffffffffffffffffffffff891615155b1561175e576040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301526000602483015283169063095ea7b3906044016020604051808303816000875af1158015611738573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175c9190612a77565b505b60cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055801561181257600083815260cb602052604090205460ff16156117af576117af612b72565b600083815260cb602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555184917f4641df4a962071e12719d8c8c8e5ac7fc4d97b927346a3d7a335b1f7517e133c91a261191f565b600083815260ce602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555184917f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f91a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff320161191f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f43726f7373446f6d61696e4d657373656e6765723a206661696c656420746f2060448201527f72656c6179206d6573736167650000000000000000000000000000000000000060648201526084016109a2565b505050505b50505050505050565b61193b338686848787611bc5565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b34156119c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f44656e79206465706f736974696e67204554480000000000000000000000000060448201526064016109a2565b60fc546040517fb9e5595800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b9e5595890611a279087908690819089906000908990600401612bb8565b600060405180830381600087803b158015611a4157600080fd5b505af1158015611a55573d6000803e3d6000fd5b5050505050505050565b60fd54604080517f4d0047ee000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691634d0047ee9160048083019260209291908290030181865afa158015611acf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109eb9190612c17565b60008036816018851015611b89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f496e76616c6964206f6e417070726f7665206461746120666f72204c3143726f60448201527f7373446f6d61696e4d657373656e67657200000000000000000000000000000060648201526084016109a2565b505050823560601c93601484013560e01c93601801927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8019150565b8315611c99576000611bd5611a5f565b9050611bf973ffffffffffffffffffffffffffffffffffffffff82168830886120eb565b60fc546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018790529082169063095ea7b3906044016020604051808303816000875af1158015611c72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c969190612a77565b50505b60cf54611d499073ffffffffffffffffffffffffffffffffffffffff16611cc1848487610b6b565b867fd764ad0b00000000000000000000000000000000000000000000000000000000611d2d60cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b8b8b8b8b8b8b60405160240161073597969594939291906129ca565b8473ffffffffffffffffffffffffffffffffffffffff167fcb0f7ffd78f9aee47a248fae8db181db6eee833039123e026dcbff529522e52a878484611dce60cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b88604051611de0959493929190612a29565b60405180910390a28573ffffffffffffffffffffffffffffffffffffffff167f8ebb2ec2465bdb2a06a66fc37a0963af8a2a6a1479d81d56fdb8cbb98096d54685604051611e3091815260200190565b60405180910390a2505060cd80547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808216600101167fffff00000000000000000000000000000000000000000000000000000000000090911617905550505050565b6000547501000000000000000000000000000000000000000000900460ff16611f3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016109a2565b60cc5473ffffffffffffffffffffffffffffffffffffffff16611f865760cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead1790555b60cf80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000611fdb858585856121fb565b805190602001209050949350505050565b6000611ffc878787878787612294565b8051906020012090509695505050505050565b60fc5460009073ffffffffffffffffffffffffffffffffffffffff16331480156109eb575060cf5460fc54604080517f9bf62d82000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9384169390921691639bf62d82916004808201926020929091908290030181865afa1580156120ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120cf9190612c17565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610e4c908590612333565b600073ffffffffffffffffffffffffffffffffffffffff821630148061067f57505060fc5473ffffffffffffffffffffffffffffffffffffffff90811691161490565b600080603f83619c4001026040850201603f5a021015949350505050565b600080600080845160208601878a8af19695505050505050565b6060848484846040516024016122149493929190612c34565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fcbd4ece9000000000000000000000000000000000000000000000000000000001790529050949350505050565b60608686868686866040516024016122b196959493929190612c7e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd764ad0b0000000000000000000000000000000000000000000000000000000017905290509695505050505050565b6000612395826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166124449092919063ffffffff16565b80519091501561243f57808060200190518101906123b39190612a77565b61243f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016109a2565b505050565b6060610bd184846000858573ffffffffffffffffffffffffffffffffffffffff85163b6124cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016109a2565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516124f69190612cc9565b60006040518083038185875af1925050503d8060008114612533576040519150601f19603f3d011682016040523d82523d6000602084013e612538565b606091505b5091509150612548828286612553565b979650505050505050565b60608315612562575081610bd4565b8251156125725782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a291906127bf565b6000602082840312156125b857600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610bd457600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461260a57600080fd5b50565b60008083601f84011261261f57600080fd5b50813567ffffffffffffffff81111561263757600080fd5b60208301915083602082850101111561264f57600080fd5b9250929050565b803563ffffffff8116811461266a57600080fd5b919050565b6000806000806060858703121561268557600080fd5b8435612690816125e8565b9350602085013567ffffffffffffffff8111156126ac57600080fd5b6126b88782880161260d565b90945092506126cb905060408601612656565b905092959194509250565b6000806000806000608086880312156126ee57600080fd5b85356126f9816125e8565b94506020860135612709816125e8565b935060408601359250606086013567ffffffffffffffff81111561272c57600080fd5b6127388882890161260d565b969995985093965092949392505050565b60005b8381101561276457818101518382015260200161274c565b83811115610e4c5750506000910152565b6000815180845261278d816020860160208601612749565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610bd46020830184612775565b6000602082840312156127e457600080fd5b5035919050565b60008060006040848603121561280057600080fd5b833567ffffffffffffffff81111561281757600080fd5b6128238682870161260d565b9094509250612836905060208501612656565b90509250925092565b60008060006060848603121561285457600080fd5b833561285f816125e8565b9250602084013561286f816125e8565b9150604084013561287f816125e8565b809150509250925092565b600080600080600080600060c0888a0312156128a557600080fd5b8735965060208801356128b7816125e8565b955060408801356128c7816125e8565b9450606088013593506080880135925060a088013567ffffffffffffffff8111156128f157600080fd5b6128fd8a828b0161260d565b989b979a50959850939692959293505050565b60008060008060006080868803121561292857600080fd5b8535612933816125e8565b945060208601359350604086013567ffffffffffffffff81111561295657600080fd5b6129628882890161260d565b9094509250612975905060608701612656565b90509295509295909350565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b878152600073ffffffffffffffffffffffffffffffffffffffff808916602084015280881660408401525085606083015263ffffffff8516608083015260c060a0830152612a1c60c083018486612981565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff86168152608060208201526000612a59608083018688612981565b905083604083015263ffffffff831660608301529695505050505050565b600060208284031215612a8957600080fd5b81518015158114610bd457600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff80831681851681830481118215151615612aef57612aef612a99565b02949350505050565b600067ffffffffffffffff80841680612b3a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910492915050565b600067ffffffffffffffff808316818516808303821115612b6957612b69612a99565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b600082821015612bb357612bb3612a99565b500390565b73ffffffffffffffffffffffffffffffffffffffff8716815285602082015284604082015267ffffffffffffffff84166060820152821515608082015260c060a08201526000612c0b60c0830184612775565b98975050505050505050565b600060208284031215612c2957600080fd5b8151610bd4816125e8565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060806040830152612c6d6080830185612775565b905082606083015295945050505050565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a0830152612c0b60c0830184612775565b60008251612cdb818460208701612749565b919091019291505056fea164736f6c634300080f000a","sourceMap":"1180:14256:141:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;91:198:146;;;;;;;;;;-1:-1:-1;91:198:146;;;;;:::i;:::-;;:::i;:::-;;;516:14:416;;509:22;491:41;;479:2;464:18;91:198:146;;;;;;;;4456:53:267;;;;;;;;;;;;4507:2;4456:53;;;;;717:18:416;705:31;;;687:50;;675:2;660:18;4456:53:267;543:200:416;4301:64:267;;;;;;;;;;;;4363:2;4301:64;;3041:87:141;;;;;;;;;;-1:-1:-1;3115:6:141;;;;3041:87;;;956:42:416;944:55;;;926:74;;914:2;899:18;3041:87:141;748:258:416;4146:62:267;;;;;;;;;;;;4206:2;4146:62;;1595:32:141;;;;;;;;;;-1:-1:-1;1595:32:141;;;;;;;;1345:40;;;;;;;;;;-1:-1:-1;1345:40:141;;;;;;;;8881:995:267;;;;;;:::i;:::-;;:::i;:::-;;3879:42;;;;;;;;;;;;3920:1;3879:42;;;;;2995:6:416;2983:19;;;2965:38;;2953:2;2938:18;3879:42:267;2821:188:416;4424:482:141;;;;;;;;;;-1:-1:-1;4424:482:141;;;;;:::i;:::-;;:::i;4597:51:267:-;;;;;;;;;;;;4642:6;4597:51;;5460:98:141;;;;;;;;;;;;;:::i;1697:40::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4943:53:267:-;;;;;;;;;;;;4991:5;4943:53;;5724:103:141;;;;;;;;;;;;;:::i;1473:28::-;;;;;;;;;;-1:-1:-1;1473:28:141;;;;;;;;16033:250:267;;;;;;;;;;;;;:::i;3999:56::-;;;;;;;;;;;;4048:7;3999:56;;16586:108;;;;;;;;;;-1:-1:-1;16673:14:267;;;;16586:108;;6494:46;;;;;;;;;;-1:-1:-1;6494:46:267;;;;;:::i;:::-;;;;;;;;;;;;;;;;5512:50;;;;;;;;;;-1:-1:-1;5512:50:267;;;;;:::i;:::-;;;;;;;;;;;;;;;;17762:894;;;;;;;;;;-1:-1:-1;17762:894:267;;;;;:::i;:::-;;:::i;2360:412:141:-;;;;;;;;;;-1:-1:-1;2360:412:141;;;;;:::i;:::-;;:::i;9864:5570::-;;;;;;:::i;:::-;;:::i;6646:42:267:-;;;;;;;;;;-1:-1:-1;6646:42:267;;;;;;;;6490:614:141;;;;;;;;;;-1:-1:-1;6490:614:141;;;;;:::i;:::-;;:::i;17015:134:267:-;;;;;;;;;;;;17116:8;;;;4855:18:216;4852:30;;5460:98:141;17015:134:267;;;8086:25:416;;;8074:2;8059:18;17015:134:267;7940:177:416;91:198:146;161:4;184:43;;;199:28;184:43;;:98;;-1:-1:-1;231:51:146;;;246:36;231:51;184:98;177:105;91:198;-1:-1:-1;;91:198:146:o;8881:995:267:-;9381:14;;9341:326;;9381:14;;9421:31;9429:8;;9439:12;9421:7;:31::i;:::-;9474:9;9544:26;9572:14;17116:8;;;;4855:18:216;4852:30;;5460:98:141;9572:14:267;9588:10;9600:7;9609:9;9620:12;9634:8;;9504:152;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9341:12;:326::i;:::-;9695:7;9683:72;;;9704:10;9716:8;;9726:14;17116:8;;;;4855:18:216;4852:30;;5460:98:141;9726:14:267;9742:12;9683:72;;;;;;;;;;:::i;:::-;;;;;;;;9770:44;;9804:9;8086:25:416;;9792:10:267;;9770:44;;8074:2:416;8059:18;9770:44:267;;;;;;;-1:-1:-1;;9851:8:267;9849:10;;;;;;;;;;;;;;;;-1:-1:-1;;8881:995:267:o;4424:482:141:-;4596:4;4646:14;:12;:14::i;:::-;4624:37;;:10;:37;;;4616:91;;;;;;;9885:2:416;4616:91:141;;;9867:21:416;9924:2;9904:18;;;9897:30;9963:34;9943:18;;;9936:62;10034:11;10014:18;;;10007:39;10063:19;;4616:91:141;;;;;;;;;4718:10;4730:18;4750:22;;4776:26;4796:5;;4776:19;:26::i;:::-;4717:85;;;;;;;;4812:66;4836:6;4844:2;4848:7;4857:11;4870:7;;4812:23;:66::i;:::-;-1:-1:-1;4895:4:141;;4424:482;-1:-1:-1;;;;;;;;;4424:482:141:o;5460:98::-;5511:7;5537:14;:12;:14::i;:::-;5530:21;;5460:98;:::o;5724:103::-;5795:16;;:25;;;;;;;;5772:4;;5795:16;;;:23;;:25;;;;;;;;;;;;;;:16;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;16033:250:267:-;16128:16;;16088:7;;16128:47;:16;:47;;16107:135;;;;;;;10577:2:416;16107:135:267;;;10559:21:416;10616:2;10596:18;;;10589:30;10655:34;10635:18;;;10628:62;10726:23;10706:18;;;10699:51;10767:19;;16107:135:267;10375:417:416;16107:135:267;-1:-1:-1;16260:16:267;;;;;16033:250::o;17762:894::-;17846:6;4991:5;4796:6;;4363:2;18075:49;4206:2;18075:49;;;;:::i;:::-;18074:90;;;;:::i;:::-;17972:51;4507:2;17979:8;17972:51;:::i;:::-;17908:116;;4048:7;17908:116;:::i;:::-;:257;;;;:::i;:::-;:412;;;;:::i;:::-;:587;;;;:::i;:::-;:741;;;;:::i;:::-;17864:785;;17762:894;;;;;;:::o;2360:412:141:-;3111:19:32;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:32;;3212:1;3197:12;;;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:32;1476:19:38;:23;;;3219:66:32;;-1:-1:-1;3268:12:32;;;;;;;3284:1;3268:17;3219:66;3157:201;;;;;;;12062:2:416;3157:201:32;;;12044:21:416;12101:2;12081:18;;;12074:30;12140:34;12120:18;;;12113:62;12211:16;12191:18;;;12184:44;12245:19;;3157:201:32;11860:410:416;3157:201:32;3368:12;:16;;;;;;;;3394:65;;;;3428:13;:20;;;;;;;;3394:65;2547:16:141::1;:36:::0;;::::1;::::0;;::::1;::::0;;;::::1;;::::0;;;2593:6:::1;:16:::0;;;;::::1;::::0;;::::1;;::::0;;2619:12:::1;:28:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;2657:108:::1;1491:42:222;2657:27:141;:108::i;:::-;3483:14:32::0;3479:99;;;3529:5;3513:21;;;;;;3553:14;;-1:-1:-1;12427:36:416;;3553:14:32;;12415:2:416;12400:18;3553:14:32;;;;;;;3479:99;3101:483;2360:412:141;;;:::o;9864:5570::-;10125:8;:6;:8::i;:::-;:17;10117:61;;;;;;;12676:2:416;10117:61:141;;;12658:21:416;12715:2;12695:18;;;12688:30;12754:33;12734:18;;;12727:61;12805:18;;10117:61:141;12474:355:416;10117:61:141;10196:9;:14;10188:67;;;;;;;13036:2:416;10188:67:141;;;13018:21:416;13075:2;13055:18;;;13048:30;13114:34;13094:18;;;13087:62;13185:10;13165:18;;;13158:38;13213:19;;10188:67:141;12834:404:416;10188:67:141;5444:3:216;5440:16;;;10364:1:141;10348:17;;10340:107;;;;;;;13445:2:416;10340:107:141;;;13427:21:416;13484:2;13464:18;;;13457:30;13523:34;13503:18;;;13496:62;13594:34;13574:18;;;13567:62;13666:15;13645:19;;;13638:44;13699:19;;10340:107:141;13243:481:416;10340:107:141;10649:13;:18;;10666:1;10649:18;10645:253;;10683:15;10701:68;10734:7;10743;10752:8;;10701:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10762:6:141;;-1:-1:-1;10701:32:141;;-1:-1:-1;;10701:68:141:i;:::-;10791:27;;;;:18;:27;;;;;;10683:86;;-1:-1:-1;10791:27:141;;:36;10783:104;;;;;;;13931:2:416;10783:104:141;;;13913:21:416;13970:2;13950:18;;;13943:30;14009:34;13989:18;;;13982:62;14080:25;14060:18;;;14053:53;14123:19;;10783:104:141;13729:419:416;10783:104:141;10669:229;10645:253;11068:21;11104:90;11137:6;11145:7;11154;11163:6;11171:12;11185:8;;11104:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11104:32:141;;-1:-1:-1;;;11104:90:141:i;:::-;11068:126;;11205:27;11235:14;:12;:14::i;:::-;11205:44;;11263:19;:17;:19::i;:::-;11259:489;;;11440:29;;;;:14;:29;;;;;;;;11439:30;11432:38;;;;:::i;:::-;11488:10;;11484:133;;11571:6;;11518:84;;11571:6;11518:44;;;;11571:6;11588:4;11595:6;11518:44;:84::i;:::-;11259:489;;;11655:29;;;;:14;:29;;;;;;;;11647:90;;;;;;;14544:2:416;11647:90:141;;;14526:21:416;14583:2;14563:18;;;14556:30;14622:34;14602:18;;;14595:62;14693:18;14673;;;14666:46;14729:19;;11647:90:141;14342:412:416;11647:90:141;11779:24;11795:7;11779:15;:24::i;:::-;:33;;;:67;;;11827:19;11816:30;;:7;:30;;;;11779:67;11758:203;;;;;;;14961:2:416;11758:203:141;;;14943:21:416;15000:2;14980:18;;;14973:30;15039:34;15019:18;;;15012:62;15110:34;15090:18;;;15083:62;15182:27;15161:19;;;15154:56;15227:19;;11758:203:141;14759:493:416;11758:203:141;11980:33;;;;:18;:33;;;;;;;;:42;11972:109;;;;;;;15459:2:416;11972:109:141;;;15441:21:416;15498:2;15478:18;;;15471:30;15537:34;15517:18;;;15510:62;15608:24;15588:18;;;15581:52;15650:19;;11972:109:141;15257:418:416;11972:109:141;12794:96;12813:12;12827:62;5250:6:267;;12827:62:141;:::i;:::-;12794:96;;:18;:96::i;:::-;12793:97;:164;;;-1:-1:-1;12910:16:141;;:47;:16;1338:42:215;12910:47:141;;12793:164;12776:937;;;12982:29;;;;:14;:29;;;;;;:36;;;;13014:4;12982:36;;;13037:35;12997:13;;13037:35;;;13552:41;:9;:41;13548:135;;13613:55;;;;;15882:2:416;13613:55:141;;;15864:21:416;15921:2;15901:18;;;15894:30;15960:34;15940:18;;;15933:62;16031:15;16011:18;;;16004:43;16064:19;;13613:55:141;15680:409:416;13548:135:141;13696:7;;;;;12776:937;13723:16;:26;;;;;;;;;;13852:11;;;;;:36;;-1:-1:-1;13867:21:141;;;;;13852:36;13848:119;;;13904:52;;;;;:35;16286:55:416;;;13904:52:141;;;16268:74:416;16358:18;;;16351:34;;;13904:35:141;;;;;16241:18:416;;13904:52:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13848:119;14050:12;14065:67;14079:7;4796:6:267;14088:9:141;:30;;;;:::i;:::-;14120:1;14123:8;;14065:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14065:13:141;;-1:-1:-1;;;14065:67:141:i;:::-;14050:82;-1:-1:-1;14146:11:141;;;;;:36;;-1:-1:-1;14161:21:141;;;;;14146:36;14142:114;;;14198:47;;;;;:35;16286:55:416;;;14198:47:141;;;16268:74:416;14243:1:141;16358:18:416;;;16351:34;14198:35:141;;;;;16241:18:416;;14198:47:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14142:114;14265:16;:46;;;;1338:42:215;14265:46:141;;;14322:1106;;;;14541:33;;;;:18;:33;;;;;;;;:42;14534:50;;;;:::i;:::-;14598:33;;;;:18;:33;;;;;;:40;;;;14634:4;14598:40;;;14657:29;14617:13;;14657:29;;;14322:1106;;;14717:29;;;;:14;:29;;;;;;:36;;;;14749:4;14717:36;;;14772:35;14732:13;;14772:35;;;15287:41;:9;:41;15283:135;;15348:55;;;;;15882:2:416;15348:55:141;;;15864:21:416;15921:2;15901:18;;;15894:30;15960:34;15940:18;;;15933:62;16031:15;16011:18;;;16004:43;16064:19;;15348:55:141;15680:409:416;15283:135:141;10107:5327;;;;9864:5570;;;;;;;;:::o;6490:614::-;7020:77;7044:10;7056:7;7065;7074:12;7088:8;;7020:23;:77::i;:::-;6490:614;;;;;:::o;1186:320:38:-;1476:19;;;:23;;;1186:320::o;3175:251:141:-;3300:9;:14;3292:46;;;;;;;17038:2:416;3292:46:141;;;17020:21:416;17077:2;17057:18;;;17050:30;17116:21;17096:18;;;17089:49;17155:18;;3292:46:141;16836:343:416;3292:46:141;3348:6;;:71;;;;;:6;;;;;:25;;:71;;3374:3;;3379:6;;;;3395:9;;3348:6;;3413:5;;3348:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3175:251;;;;:::o;5564:113::-;5637:12;;:33;;;;;;;;5611:7;;5637:12;;;:31;;:33;;;;;;;;;;;;;;:12;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3527:692::-;3625:11;;3659:23;3625:11;3722:2;3706:18;;;3698:80;;;;;;;18306:2:416;3698:80:141;;;18288:21:416;18345:2;18325:18;;;18318:30;18384:34;18364:18;;;18357:62;18455:19;18435:18;;;18428:47;18492:19;;3698:80:141;18104:413:416;3698:80:141;-1:-1:-1;;;3996:26:141;;3992:2;3988:35;;4092:2;4074:21;;4061:35;4056:3;4052:45;;4147:2;4129:21;;4182;;;-1:-1:-1;3527:692:141:o;7830:1337::-;8073:11;;8069:252;;8100:27;8130:14;:12;:14::i;:::-;8100:44;-1:-1:-1;8158:77:141;:44;;;8203:7;8220:4;8227:7;8158:44;:77::i;:::-;8293:6;;8249:61;;;;;:35;8293:6;;;8249:61;;;16268:74:416;16358:18;;;16351:34;;;8249:35:141;;;;;;16241:18:416;;8249:61:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8086:235;8069:252;8714:14;;8680:286;;8714:14;;8743:31;8751:8;;8761:12;8743:7;:31::i;:::-;8788:7;8849:26;8877:14;17116:8:267;;;;4855:18:216;4852:30;;5460:98:141;8877:14;8893:7;8902;8911;8920:12;8934:8;;8809:147;;;;;;;;;;;;;;:::i;8680:286::-;8994:7;8982:69;;;9003:7;9012:8;;9022:14;17116:8:267;;;;4855:18:216;4852:30;;5460:98:141;9022:14;9038:12;8982:69;;;;;;;;;;:::i;:::-;;;;;;;;9088:7;9066:39;;;9097:7;9066:39;;;;8086:25:416;;8074:2;8059:18;;7940:177;9066:39:141;;;;;;;;-1:-1:-1;;9142:8:141;9140:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;7830:1337:141:o;18772:636:267:-;4910:13:32;;;;;;;4902:69;;;;;;;18724:2:416;4902:69:32;;;18706:21:416;18763:2;18743:18;;;18736:30;18802:34;18782:18;;;18775:62;18873:13;18853:18;;;18846:41;18904:19;;4902:69:32;18522:407:416;4902:69:32;19257:16:267::1;::::0;:30:::1;:16;19253:107;;19303:16;:46:::0;;;::::1;1338:42:215;19303:46:267;::::0;;19253:107:::1;19369:14;:32:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;18772:636::o;3100:305:218:-;3289:7;3329:68;3365:7;3374;3383:5;3390:6;3329:35;:68::i;:::-;3319:79;;;;;;3312:86;;3100:305;;;;;;:::o;3877:375::-;4117:7;4157:87;4193:6;4201:7;4210;4219:6;4227:9;4238:5;4157:35;:87::i;:::-;4147:98;;;;;;4140:105;;3877:375;;;;;;;;:::o;4953:168:141:-;5059:6;;5014:4;;5059:6;;5037:10;:29;:77;;;;-1:-1:-1;5099:14:141;;5070:6;;:17;;;;;;;;5099:14;;;;;5070:6;;;;:15;;:17;;;;;;;;;;;;;;;:6;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;;;5030:84;;4953:168;:::o;974:241:57:-;1139:68;;;19146:42:416;19215:15;;;1139:68:57;;;19197:34:416;19267:15;;19247:18;;;19240:43;19299:18;;;;19292:34;;;1139:68:57;;;;;;;;;;19109:18:416;;;;1139:68:57;;;;;;;;;;1162:27;1139:68;;;1112:96;;1132:5;;1112:19;:96::i;5168:158:141:-;5242:4;5265:24;;;5284:4;5265:24;;:54;;-1:-1:-1;;5312:6:141;;;;;;5293:26;;;;5168:158::o;3615:365:224:-;3696:4;3712:15;3931:2;3916:12;3909:5;3905:24;3901:33;3896:2;3887:7;3883:16;3879:56;3874:2;3867:5;3863:14;3860:76;3853:84;;3615:365;-1:-1:-1;;;;3615:365:224:o;1202:536::-;1305:4;1321:13;1668:1;1635;1594:9;1588:16;1554:2;1543:9;1539:18;1496:6;1454:7;1421:4;1395:302;1367:330;1202:536;-1:-1:-1;;;;;;1202:536:224:o;3073:336:216:-;3264:12;3370:7;3379;3388:5;3395:6;3299:103;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3073:336:216;;;;;;:::o;3883:516::-;4125:12;4272:6;4292:7;4313;4334:6;4354:9;4377:5;4160:232;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3883:516:216;;;;;;;;:::o;3747:706:57:-;4166:23;4192:69;4220:4;4192:69;;;;;;;;;;;;;;;;;4200:5;4192:27;;;;:69;;;;;:::i;:::-;4275:17;;4166:95;;-1:-1:-1;4275:21:57;4271:176;;4370:10;4359:30;;;;;;;;;;;;:::i;:::-;4351:85;;;;;;;20717:2:416;4351:85:57;;;20699:21:416;20756:2;20736:18;;;20729:30;20795:34;20775:18;;;20768:62;20866:12;20846:18;;;20839:40;20896:19;;4351:85:57;20515:406:416;4351:85:57;3817:636;3747:706;;:::o;3861:223:64:-;3994:12;4025:52;4047:6;4055:4;4061:1;4064:12;3994;1476:19:38;;;;5228:60:64;;;;;;;21535:2:416;5228:60:64;;;21517:21:416;21574:2;21554:18;;;21547:30;21613:31;21593:18;;;21586:59;21662:18;;5228:60:64;21333:353:416;5228:60:64;5300:12;5314:23;5341:6;:11;;5360:5;5367:4;5341:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5299:73;;;;5389:51;5406:7;5415:10;5427:12;5389:16;:51::i;:::-;5382:58;4948:499;-1:-1:-1;;;;;;;4948:499:64:o;7561:742::-;7707:12;7735:7;7731:566;;;-1:-1:-1;7765:10:64;7758:17;;7731:566;7876:17;;:21;7872:415;;8120:10;8114:17;8180:15;8167:10;8163:2;8159:19;8152:44;7872:415;8259:12;8252:20;;;;;;;;;;;:::i;14:332:416:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:66;223:5;219:78;212:5;209:89;199:117;;312:1;309;302:12;1521:154;1607:42;1600:5;1596:54;1589:5;1586:65;1576:93;;1665:1;1662;1655:12;1576:93;1521:154;:::o;1680:347::-;1731:8;1741:6;1795:3;1788:4;1780:6;1776:17;1772:27;1762:55;;1813:1;1810;1803:12;1762:55;-1:-1:-1;1836:20:416;;1879:18;1868:30;;1865:50;;;1911:1;1908;1901:12;1865:50;1948:4;1940:6;1936:17;1924:29;;2000:3;1993:4;1984:6;1976;1972:19;1968:30;1965:39;1962:59;;;2017:1;2014;2007:12;1962:59;1680:347;;;;;:::o;2032:163::-;2099:20;;2159:10;2148:22;;2138:33;;2128:61;;2185:1;2182;2175:12;2128:61;2032:163;;;:::o;2200:616::-;2287:6;2295;2303;2311;2364:2;2352:9;2343:7;2339:23;2335:32;2332:52;;;2380:1;2377;2370:12;2332:52;2419:9;2406:23;2438:31;2463:5;2438:31;:::i;:::-;2488:5;-1:-1:-1;2544:2:416;2529:18;;2516:32;2571:18;2560:30;;2557:50;;;2603:1;2600;2593:12;2557:50;2642:58;2692:7;2683:6;2672:9;2668:22;2642:58;:::i;:::-;2719:8;;-1:-1:-1;2616:84:416;-1:-1:-1;2773:37:416;;-1:-1:-1;2806:2:416;2791:18;;2773:37;:::i;:::-;2763:47;;2200:616;;;;;;;:::o;3014:754::-;3111:6;3119;3127;3135;3143;3196:3;3184:9;3175:7;3171:23;3167:33;3164:53;;;3213:1;3210;3203:12;3164:53;3252:9;3239:23;3271:31;3296:5;3271:31;:::i;:::-;3321:5;-1:-1:-1;3378:2:416;3363:18;;3350:32;3391:33;3350:32;3391:33;:::i;:::-;3443:7;-1:-1:-1;3497:2:416;3482:18;;3469:32;;-1:-1:-1;3552:2:416;3537:18;;3524:32;3579:18;3568:30;;3565:50;;;3611:1;3608;3601:12;3565:50;3650:58;3700:7;3691:6;3680:9;3676:22;3650:58;:::i;:::-;3014:754;;;;-1:-1:-1;3014:754:416;;-1:-1:-1;3727:8:416;;3624:84;3014:754;-1:-1:-1;;;3014:754:416:o;4004:258::-;4076:1;4086:113;4100:6;4097:1;4094:13;4086:113;;;4176:11;;;4170:18;4157:11;;;4150:39;4122:2;4115:10;4086:113;;;4217:6;4214:1;4211:13;4208:48;;;-1:-1:-1;;4252:1:416;4234:16;;4227:27;4004:258::o;4267:317::-;4309:3;4347:5;4341:12;4374:6;4369:3;4362:19;4390:63;4446:6;4439:4;4434:3;4430:14;4423:4;4416:5;4412:16;4390:63;:::i;:::-;4498:2;4486:15;4503:66;4482:88;4473:98;;;;4573:4;4469:109;;4267:317;-1:-1:-1;;4267:317:416:o;4589:220::-;4738:2;4727:9;4720:21;4701:4;4758:45;4799:2;4788:9;4784:18;4776:6;4758:45;:::i;5076:180::-;5135:6;5188:2;5176:9;5167:7;5163:23;5159:32;5156:52;;;5204:1;5201;5194:12;5156:52;-1:-1:-1;5227:23:416;;5076:180;-1:-1:-1;5076:180:416:o;5261:481::-;5339:6;5347;5355;5408:2;5396:9;5387:7;5383:23;5379:32;5376:52;;;5424:1;5421;5414:12;5376:52;5464:9;5451:23;5497:18;5489:6;5486:30;5483:50;;;5529:1;5526;5519:12;5483:50;5568:58;5618:7;5609:6;5598:9;5594:22;5568:58;:::i;:::-;5645:8;;-1:-1:-1;5542:84:416;-1:-1:-1;5699:37:416;;-1:-1:-1;5732:2:416;5717:18;;5699:37;:::i;:::-;5689:47;;5261:481;;;;;:::o;5747:601::-;5896:6;5904;5912;5965:2;5953:9;5944:7;5940:23;5936:32;5933:52;;;5981:1;5978;5971:12;5933:52;6020:9;6007:23;6039:31;6064:5;6039:31;:::i;:::-;6089:5;-1:-1:-1;6146:2:416;6131:18;;6118:32;6159:33;6118:32;6159:33;:::i;:::-;6211:7;-1:-1:-1;6270:2:416;6255:18;;6242:32;6283:33;6242:32;6283:33;:::i;:::-;6335:7;6325:17;;;5747:601;;;;;:::o;6353:892::-;6468:6;6476;6484;6492;6500;6508;6516;6569:3;6557:9;6548:7;6544:23;6540:33;6537:53;;;6586:1;6583;6576:12;6537:53;6622:9;6609:23;6599:33;;6682:2;6671:9;6667:18;6654:32;6695:31;6720:5;6695:31;:::i;:::-;6745:5;-1:-1:-1;6802:2:416;6787:18;;6774:32;6815:33;6774:32;6815:33;:::i;:::-;6867:7;-1:-1:-1;6921:2:416;6906:18;;6893:32;;-1:-1:-1;6972:3:416;6957:19;;6944:33;;-1:-1:-1;7028:3:416;7013:19;;7000:33;7056:18;7045:30;;7042:50;;;7088:1;7085;7078:12;7042:50;7127:58;7177:7;7168:6;7157:9;7153:22;7127:58;:::i;:::-;6353:892;;;;-1:-1:-1;6353:892:416;;-1:-1:-1;6353:892:416;;;;7101:84;;-1:-1:-1;;;6353:892:416:o;7250:685::-;7346:6;7354;7362;7370;7378;7431:3;7419:9;7410:7;7406:23;7402:33;7399:53;;;7448:1;7445;7438:12;7399:53;7487:9;7474:23;7506:31;7531:5;7506:31;:::i;:::-;7556:5;-1:-1:-1;7608:2:416;7593:18;;7580:32;;-1:-1:-1;7663:2:416;7648:18;;7635:32;7690:18;7679:30;;7676:50;;;7722:1;7719;7712:12;7676:50;7761:58;7811:7;7802:6;7791:9;7787:22;7761:58;:::i;:::-;7838:8;;-1:-1:-1;7735:84:416;-1:-1:-1;7892:37:416;;-1:-1:-1;7925:2:416;7910:18;;7892:37;:::i;:::-;7882:47;;7250:685;;;;;;;;:::o;8122:325::-;8210:6;8205:3;8198:19;8262:6;8255:5;8248:4;8243:3;8239:14;8226:43;;8314:1;8307:4;8298:6;8293:3;8289:16;8285:27;8278:38;8180:3;8436:4;8366:66;8361:2;8353:6;8349:15;8345:88;8340:3;8336:98;8332:109;8325:116;;8122:325;;;;:::o;8452:697::-;8747:6;8736:9;8729:25;8710:4;8773:42;8863:2;8855:6;8851:15;8846:2;8835:9;8831:18;8824:43;8915:2;8907:6;8903:15;8898:2;8887:9;8883:18;8876:43;;8955:6;8950:2;8939:9;8935:18;8928:34;9011:10;9003:6;8999:23;8993:3;8982:9;8978:19;8971:52;9060:3;9054;9043:9;9039:19;9032:32;9081:62;9138:3;9127:9;9123:19;9115:6;9107;9081:62;:::i;:::-;9073:70;8452:697;-1:-1:-1;;;;;;;;;8452:697:416:o;9154:524::-;9406:42;9398:6;9394:55;9383:9;9376:74;9486:3;9481:2;9470:9;9466:18;9459:31;9357:4;9507:62;9564:3;9553:9;9549:19;9541:6;9533;9507:62;:::i;:::-;9499:70;;9605:6;9600:2;9589:9;9585:18;9578:34;9660:10;9652:6;9648:23;9643:2;9632:9;9628:18;9621:51;9154:524;;;;;;;;:::o;10093:277::-;10160:6;10213:2;10201:9;10192:7;10188:23;10184:32;10181:52;;;10229:1;10226;10219:12;10181:52;10261:9;10255:16;10314:5;10307:13;10300:21;10293:5;10290:32;10280:60;;10336:1;10333;10326:12;10797:184;10849:77;10846:1;10839:88;10946:4;10943:1;10936:15;10970:4;10967:1;10960:15;10986:270;11025:7;11057:18;11102:2;11099:1;11095:10;11132:2;11129:1;11125:10;11188:3;11184:2;11180:12;11175:3;11172:21;11165:3;11158:11;11151:19;11147:47;11144:73;;;11197:18;;:::i;:::-;11237:13;;10986:270;-1:-1:-1;;;;10986:270:416:o;11261:353::-;11300:1;11326:18;11371:2;11368:1;11364:10;11393:3;11383:191;;11430:77;11427:1;11420:88;11531:4;11528:1;11521:15;11559:4;11556:1;11549:15;11383:191;11592:10;;11588:20;;;;;11261:353;-1:-1:-1;;11261:353:416:o;11619:236::-;11658:3;11686:18;11731:2;11728:1;11724:10;11761:2;11758:1;11754:10;11792:3;11788:2;11784:12;11779:3;11776:21;11773:47;;;11800:18;;:::i;:::-;11836:13;;11619:236;-1:-1:-1;;;;11619:236:416:o;14153:184::-;14205:77;14202:1;14195:88;14302:4;14299:1;14292:15;14326:4;14323:1;14316:15;16396:125;16436:4;16464:1;16461;16458:8;16455:34;;;16469:18;;:::i;:::-;-1:-1:-1;16506:9:416;;16396:125::o;17184:659::-;17475:42;17467:6;17463:55;17452:9;17445:74;17555:6;17550:2;17539:9;17535:18;17528:34;17598:6;17593:2;17582:9;17578:18;17571:34;17653:18;17645:6;17641:31;17636:2;17625:9;17621:18;17614:59;17724:6;17717:14;17710:22;17704:3;17693:9;17689:19;17682:51;17770:3;17764;17753:9;17749:19;17742:32;17426:4;17791:46;17832:3;17821:9;17817:19;17809:6;17791:46;:::i;:::-;17783:54;17184:659;-1:-1:-1;;;;;;;;17184:659:416:o;17848:251::-;17918:6;17971:2;17959:9;17950:7;17946:23;17942:32;17939:52;;;17987:1;17984;17977:12;17939:52;18019:9;18013:16;18038:31;18063:5;18038:31;:::i;19337:512::-;19531:4;19560:42;19641:2;19633:6;19629:15;19618:9;19611:34;19693:2;19685:6;19681:15;19676:2;19665:9;19661:18;19654:43;;19733:3;19728:2;19717:9;19713:18;19706:31;19754:46;19795:3;19784:9;19780:19;19772:6;19754:46;:::i;:::-;19746:54;;19836:6;19831:2;19820:9;19816:18;19809:34;19337:512;;;;;;;:::o;19854:656::-;20141:6;20130:9;20123:25;20104:4;20167:42;20257:2;20249:6;20245:15;20240:2;20229:9;20225:18;20218:43;20309:2;20301:6;20297:15;20292:2;20281:9;20277:18;20270:43;;20349:6;20344:2;20333:9;20329:18;20322:34;20393:6;20387:3;20376:9;20372:19;20365:35;20437:3;20431;20420:9;20416:19;20409:32;20458:46;20499:3;20488:9;20484:19;20476:6;20458:46;:::i;21691:274::-;21820:3;21858:6;21852:13;21874:53;21920:6;21915:3;21908:4;21900:6;21896:17;21874:53;:::i;:::-;21943:16;;;;;21691:274;-1:-1:-1;;21691:274:416:o","linkReferences":{}},"methodIdentifiers":{"MESSAGE_VERSION()":"3f827a5a","MIN_GAS_CALLDATA_OVERHEAD()":"028f85f7","MIN_GAS_DYNAMIC_OVERHEAD_DENOMINATOR()":"0c568498","MIN_GAS_DYNAMIC_OVERHEAD_NUMERATOR()":"2828d7e8","OTHER_MESSENGER()":"9fce812c","PORTAL()":"0ff754ea","RELAY_CALL_OVERHEAD()":"4c1d6a69","RELAY_CONSTANT_OVERHEAD()":"83a74074","RELAY_GAS_CHECK_BUFFER()":"5644cfdf","RELAY_GAS_CHECK_BUFFER_INCLUDING_APPROVAL()":"7f87f520","RELAY_RESERVED_GAS()":"8cbeeef2","baseGas(bytes,uint32)":"b28ade25","failedMessages(bytes32)":"a4e7f8bd","initialize(address,address,address)":"c0c53b8b","messageNonce()":"ecc70428","nativeTokenAddress()":"4d0047ee","onApprove(address,address,uint256,bytes)":"4273ca16","otherMessenger()":"db505d80","paused()":"5c975abb","portal()":"6425666b","relayMessage(uint256,address,address,uint256,uint256,bytes)":"d764ad0b","sendMessage(address,bytes,uint32)":"3dbb202b","sendNativeTokenMessage(address,uint256,bytes,uint32)":"e0e593c5","successfulMessages(bytes32)":"b1b1b209","superchainConfig()":"35e80ab3","supportsInterface(bytes4)":"01ffc9a7","systemConfig()":"33d7e2bd","version()":"54fd4d50","xDomainMessageSender()":"6e296e45"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"FailedRelayedMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"RelayedMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"}],\"name\":\"SentMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SentMessageExtension1\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MESSAGE_VERSION\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_GAS_CALLDATA_OVERHEAD\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_GAS_DYNAMIC_OVERHEAD_DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_GAS_DYNAMIC_OVERHEAD_NUMERATOR\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OTHER_MESSENGER\",\"outputs\":[{\"internalType\":\"contract CrossDomainMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PORTAL\",\"outputs\":[{\"internalType\":\"contract OptimismPortal\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RELAY_CALL_OVERHEAD\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RELAY_CONSTANT_OVERHEAD\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RELAY_GAS_CHECK_BUFFER\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RELAY_GAS_CHECK_BUFFER_INCLUDING_APPROVAL\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RELAY_RESERVED_GAS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"}],\"name\":\"baseGas\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"failedMessages\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract SuperchainConfig\",\"name\":\"_superchainConfig\",\"type\":\"address\"},{\"internalType\":\"contract OptimismPortal\",\"name\":\"_portal\",\"type\":\"address\"},{\"internalType\":\"contract SystemConfig\",\"name\":\"_systemConfig\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messageNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nativeTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"onApprove\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"otherMessenger\",\"outputs\":[{\"internalType\":\"contract CrossDomainMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"portal\",\"outputs\":[{\"internalType\":\"contract OptimismPortal\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"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\":\"_minGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"}],\"name\":\"relayMessage\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"}],\"name\":\"sendMessage\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"}],\"name\":\"sendNativeTokenMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"successfulMessages\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"superchainConfig\",\"outputs\":[{\"internalType\":\"contract SuperchainConfig\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"systemConfig\",\"outputs\":[{\"internalType\":\"contract SystemConfig\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"xDomainMessageSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"custom:proxied\":\"@title L1CrossDomainMessenger\",\"kind\":\"dev\",\"methods\":{\"OTHER_MESSENGER()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"CrossDomainMessenger contract on the other chain.\"}},\"PORTAL()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"Contract of the OptimismPortal on this chain.\"}},\"baseGas(bytes,uint32)\":{\"params\":{\"_message\":\"Message to compute the amount of required gas for.\",\"_minGasLimit\":\"Minimum desired gas limit when message goes to target.\"},\"returns\":{\"_0\":\"Amount of gas required to guarantee message receipt.\"}},\"initialize(address,address,address)\":{\"params\":{\"_portal\":\"Contract of the OptimismPortal contract on this network.\",\"_superchainConfig\":\"Contract of the SuperchainConfig contract on this network.\",\"_systemConfig\":\"Contract of the SystemConfig contract on this network.\"}},\"messageNonce()\":{\"returns\":{\"_0\":\"Nonce of the next message to be sent, with added message version.\"}},\"nativeTokenAddress()\":{\"returns\":{\"_0\":\"address The address of native token\"}},\"onApprove(address,address,uint256,bytes)\":{\"params\":{\"_amount\":\"Approved amount\",\"_data\":\"Data used in OnApprove contract\",\"_owner\":\"Account that called approveAndCall\"}},\"paused()\":{\"returns\":{\"_0\":\"Whether or not the contract is paused.\"}},\"relayMessage(uint256,address,address,uint256,uint256,bytes)\":{\"params\":{\"_message\":\"Message to send to the target.\",\"_minGasLimit\":\"Minimum amount of gas that the message can be executed with.\",\"_nonce\":\"Nonce of the message being relayed.\",\"_sender\":\"Address of the user who sent the message.\",\"_target\":\"Address that the message is targeted at.\",\"_value\":\"Native token value to send with the message.\"}},\"sendMessage(address,bytes,uint32)\":{\"params\":{\"_message\":\"Message to trigger the target address with.\",\"_minGasLimit\":\"Minimum gas limit that the message can be executed with.\",\"_target\":\"Target contract or wallet address.\"}},\"sendNativeTokenMessage(address,uint256,bytes,uint32)\":{\"params\":{\"_amount\":\"Amount of deposit native token.\",\"_message\":\"Message to trigger the target address with.\",\"_minGasLimit\":\"Minimum gas limit that the message can be executed with.\",\"_target\":\"Target contract or wallet address.\"}},\"xDomainMessageSender()\":{\"returns\":{\"_0\":\"Address of the sender of the currently executing message on the other chain.\"}}},\"stateVariables\":{\"portal\":{\"custom:network-specific\":\"\"},\"systemConfig\":{\"custom:network-specific\":\"\"},\"version\":{\"custom:semver\":\"2.4.0\"}},\"version\":1},\"userdoc\":{\"events\":{\"FailedRelayedMessage(bytes32)\":{\"notice\":\"Emitted whenever a message fails to be relayed on this chain.\"},\"RelayedMessage(bytes32)\":{\"notice\":\"Emitted whenever a message is successfully relayed on this chain.\"},\"SentMessage(address,address,bytes,uint256,uint256)\":{\"notice\":\"Emitted whenever a message is sent to the other chain.\"},\"SentMessageExtension1(address,uint256)\":{\"notice\":\"Additional event data to emit, required as of Bedrock. Cannot be merged with the         SentMessage event without breaking the ABI of this contract, this is good enough.\"}},\"kind\":\"user\",\"methods\":{\"MESSAGE_VERSION()\":{\"notice\":\"Current message version identifier.\"},\"MIN_GAS_CALLDATA_OVERHEAD()\":{\"notice\":\"Extra gas added to base gas for each byte of calldata in a message.\"},\"MIN_GAS_DYNAMIC_OVERHEAD_DENOMINATOR()\":{\"notice\":\"Denominator for dynamic overhead added to the base gas for a message.\"},\"MIN_GAS_DYNAMIC_OVERHEAD_NUMERATOR()\":{\"notice\":\"Numerator for dynamic overhead added to the base gas for a message.\"},\"OTHER_MESSENGER()\":{\"notice\":\"Retrieves the address of the paired CrossDomainMessenger contract on the other chain         Public getter is legacy and will be removed in the future. Use `otherMessenger()` instead.\"},\"PORTAL()\":{\"notice\":\"Getter function for the OptimismPortal contract on this chain.         Public getter is legacy and will be removed in the future. Use `portal()` instead.\"},\"RELAY_CALL_OVERHEAD()\":{\"notice\":\"Gas reserved for performing the external call in `relayMessage`.\"},\"RELAY_CONSTANT_OVERHEAD()\":{\"notice\":\"Constant overhead added to the base gas for a message.\"},\"RELAY_GAS_CHECK_BUFFER()\":{\"notice\":\"Gas reserved for the execution between the `hasMinGas` check and the external         call in `relayMessage`.\"},\"RELAY_GAS_CHECK_BUFFER_INCLUDING_APPROVAL()\":{\"notice\":\"Gas reserved for the execution between the `hasMinGas` check and the external         call in `relayMessage` on L1 (include gas for the approve() function)\"},\"RELAY_RESERVED_GAS()\":{\"notice\":\"Gas reserved for finalizing the execution of `relayMessage` after the safe call.\"},\"baseGas(bytes,uint32)\":{\"notice\":\"Computes the amount of gas required to guarantee that a given message will be         received on the other chain without running out of gas. Guaranteeing that a message         will not run out of gas is important because this ensures that a message can always         be replayed on the other chain if it fails to execute completely.\"},\"constructor\":{\"notice\":\"Constructs the L1CrossDomainMessenger contract.\"},\"failedMessages(bytes32)\":{\"notice\":\"Mapping of message hashes to a boolean if and only if the message has failed to be         executed at least once. A message will not be present in this mapping if it         successfully executed on the first attempt.\"},\"initialize(address,address,address)\":{\"notice\":\"Initializes the contract.\"},\"messageNonce()\":{\"notice\":\"Retrieves the next message nonce. Message version will be added to the upper two         bytes of the message nonce. Message version allows us to treat messages as having         different structures.\"},\"nativeTokenAddress()\":{\"notice\":\"Getter function for address of native token on this network\"},\"onApprove(address,address,uint256,bytes)\":{\"notice\":\"ERC20 onApprove callback\"},\"otherMessenger()\":{\"notice\":\"CrossDomainMessenger contract on the other chain.\"},\"paused()\":{\"notice\":\"This function should return true if the contract is paused.         On L1 this function will check the SuperchainConfig for its paused status.         On L2 this function should be a no-op.\"},\"portal()\":{\"notice\":\"Contract of the OptimismPortal.\"},\"relayMessage(uint256,address,address,uint256,uint256,bytes)\":{\"notice\":\"Relays a message that was sent by the other CrossDomainMessenger contract. Can only         be executed via cross-chain call from the other messenger OR if the message was         already received once and is currently being replayed.\"},\"sendMessage(address,bytes,uint32)\":{\"notice\":\"Sends a message to some target address on the other chain. Note that if the call         always reverts, then the message will be unrelayable, and any ETH sent will be         permanently locked. The same will occur if the target on the other chain is         considered unsafe (see the _isUnsafeTarget() function).\"},\"sendNativeTokenMessage(address,uint256,bytes,uint32)\":{\"notice\":\"Sends a deposit native token message to some target address on the other chain. Note that if the call         always reverts, then the message will be unrelayable, and any ETH sent will be         permanently locked. The same will occur if the target on the other chain is         considered unsafe (see the _isUnsafeTarget() function).\"},\"successfulMessages(bytes32)\":{\"notice\":\"Mapping of message hashes to boolean receipt values. Note that a message will only         be present in this mapping if it has successfully been relayed on this chain, and         can therefore not be relayed again.\"},\"superchainConfig()\":{\"notice\":\"Contract of the SuperchainConfig.\"},\"systemConfig()\":{\"notice\":\"Address of the SystemConfig contract.\"},\"version()\":{\"notice\":\"Semantic version.\"},\"xDomainMessageSender()\":{\"notice\":\"Retrieves the address of the contract or wallet that initiated the currently         executing message on the other chain. Will throw an error if there is no message         currently being executed. Allows the recipient of a call to see who triggered it.\"}},\"notice\":\"The L1CrossDomainMessenger is a message passing interface between L1 and L2 responsible         for sending and receiving data on the L1 side. Users are encouraged to use this         interface instead of interacting with lower-level contracts directly.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/L1/L1CrossDomainMessenger.sol\":\"L1CrossDomainMessenger\"},\"evmVersion\":\"london\",\"libraries\":{\"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker\":\"0x4200000000000000000000000000000000000776\"},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady/=lib/solady/src/\",\":automate/=lib/automate/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":gelato/=lib/automate/contracts/\",\":hardhat/=lib/automate/node_modules/hardhat/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/\",\":prb-test/=lib/automate/lib/prb-test/src/\",\":prb/-est/=lib/automate/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f\",\"dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x24b04b8aacaaf1a4a0719117b29c9c3647b1f479c5ac2a60f5ff1bb6d839c238\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://43e46da9d9f49741ecd876a269e71bc7494058d7a8e9478429998adb5bc3eaa0\",\"dweb:/ipfs/QmUtp4cqzf22C5rJ76AabKADquGWcjsc33yjYXxXC4sDvy\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x032807210d1d7d218963d7355d62e021a84bf1b3339f4f50be2f63b53cccaf29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11756f42121f6541a35a8339ea899ee7514cfaa2e6d740625fcc844419296aa6\",\"dweb:/ipfs/QmekMuk6BY4DAjzeXr4MSbKdgoqqsZnA8JPtuyWc6CwXHf\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xd15c3e400531f00203839159b2b8e7209c5158b35618f570c695b7e47f12e9f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b600b852e0597aa69989cc263111f02097e2827edc1bdc70306303e3af5e9929\",\"dweb:/ipfs/QmU4WfM28A1nDqghuuGeFmN3CnVrk6opWtiF65K4vhFPeC\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb3ebde1c8d27576db912d87c3560dab14adfb9cd001be95890ec4ba035e652e7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a709421c4f5d4677db8216055d2d4dac96a613efdb08178a9f7041f0c5cef689\",\"dweb:/ipfs/QmYs2rStvVLDnSJs8HgaMD1ABwoKKWdiVbQyNfLfFWTjTy\"]},\"lib/solady/src/utils/LibString.sol\":{\"keccak256\":\"0x74ec81acbea6db4afe149ab51e26961bcb801af42f7af98242be71b866066200\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://16bb49824fcfa9667aeed0eb515fdefda1016225085cf78ed852078c67168229\",\"dweb:/ipfs/QmZ59xrx5QLSx5N5CiTLrfwsPKR7kpK4RRpiEWSMEpvDzQ\"]},\"lib/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x622fcd8a49e132df5ec7651cc6ae3aaf0cf59bdcd67a9a804a1b9e2485113b7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af77088eb606427d4c55e578984a615779c86bc30646a20f7bb27299ba390f7c\",\"dweb:/ipfs/QmZGQdhdQDtHc7gZXWrKXgA3govc74X8U63BiWhPQK3mK8\"]},\"src/L1/L1CrossDomainMessenger.sol\":{\"keccak256\":\"0xd68f7101fd00c5b1fbb78c05df9687e8647c767eb7c147b47ad976c881938ce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://613cfbc4213e1cc257bab3233af114fe4a600882e5d4fe703f8826ecf3085794\",\"dweb:/ipfs/QmbTPEsK49bPgPCSxsJadD3G45Rj9wKQ9peovFKG22oFgY\"]},\"src/L1/L2OutputOracle.sol\":{\"keccak256\":\"0x342c5084f3c640c90530122bd78372c011d6162e698dd8c8daec9496fef01d42\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8700a3d486bd62cbb861ff80175b8040336940515791073af6a036db7c2df303\",\"dweb:/ipfs/QmSGKTH84rVHWgMg4d6GQZCmCJ16KuUuTsMwPMDdJxCsww\"]},\"src/L1/OnApprove.sol\":{\"keccak256\":\"0x40cee21f13053d860ab0aaaf77ff596f7131cb39ab21963d076e9e276492d31a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b384a3225e25c0232aaa775d0f4df514ad7423228810e157ba921b736421c6b1\",\"dweb:/ipfs/QmcPTPwvhqtHLQAgntzVdqeptDDgmnEafnZwgAK7D7AoV1\"]},\"src/L1/OptimismPortal.sol\":{\"keccak256\":\"0xb9c5a2ce9544e03df45181f151d1bf0064939f43206e8a9f0567827e36b3121e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b79fbc86f7ae8d131a596dfce23b23ce4b21fa71c5210dbe969c196590af1832\",\"dweb:/ipfs/QmWc9sPFpGr3nQyWVUxjhdB1CKdp3fFgSnYbYignhGSf7n\"]},\"src/L1/ResourceMetering.sol\":{\"keccak256\":\"0x069f3449a0408d7a9d05f3a5e01cce5e9c746591d8f3c87b43fcf9723bf7301d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://124fff8e3b3c5992f04f1c92ceac09b003b880ec43031ef4ce816b2750184805\",\"dweb:/ipfs/QmfRxhi3hRdAhFkMLjX6RgHeFnWtkTJveQe8DVJcvRv3Er\"]},\"src/L1/SuperchainConfig.sol\":{\"keccak256\":\"0x5fab874f980fe3e52c3398ddd25b655c56af0c98c15588b2ad9ebf30671d859d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4e0aa613d38eceb621f8569fc714f521bc1f2df3d029552186ab3cdf2ee5d53f\",\"dweb:/ipfs/QmZDzFxhTXLW79eohQbr1nghNh3oNC4CUfH7uMX8CsjVAB\"]},\"src/L1/SystemConfig.sol\":{\"keccak256\":\"0xb7e58757a691bb72ddd0d2e4c2d11ff097985d92eb38a16bbcd2d4e1c6aa8f05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9f0a9f317a6534fbd646d52d6e22441dab52da4c285df5dd63f377c6740c7ec\",\"dweb:/ipfs/QmNz5NFRwFas2SRwC5gAvxspffh5vZy6wEzr77ofd3AWaB\"]},\"src/libraries/Arithmetic.sol\":{\"keccak256\":\"0x91345e053584f82ad04d682ba821cf3ede808304f5b2a88116a894cf692c21db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://005e3c42d2edfca0a506cbda94d3b0104eddf20c00bd1bd25272f53f2ef74c72\",\"dweb:/ipfs/QmdaW6Nge6NKoGvFqRpQjBpM2fXpc5y8WpZyBnDnKicdJq\"]},\"src/libraries/Burn.sol\":{\"keccak256\":\"0x8676782233b8ee5735e9f09225a40acb8d9bdcb6b223ef356fda91058c24ed14\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53956d4ade06cd8c76b81c71a35a5d3f139c4f992753deac68edb3232bfe5265\",\"dweb:/ipfs/QmX9H6eVXpUNDEXcGDYgTAksR2quinGXDds275svLRt2fd\"]},\"src/libraries/Bytes.sol\":{\"keccak256\":\"0x827f47d123b0fdf3b08816d5b33831811704dbf4e554e53f2269354f6bba8859\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3137ac7204d30a245a8b0d67aa6da5286f1bd8c90379daab561f84963b6db782\",\"dweb:/ipfs/QmWRhisw3axJK833gUScs23ETh2MLFbVzzqzYVMKSDN3S9\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x0a52edff4eb90806c5fd570e9c4be2e04327facb9af24e8d15c6cdea9f7a6395\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b009c00e43bfc2794ee8954a57e37084eb6fdc05c215aab19f8d697d1a86ca5\",\"dweb:/ipfs/QmQNzUfs95W6dLVPrHj8ik51uhiD5acihYcxZBDhpTCw4f\"]},\"src/libraries/Encoding.sol\":{\"keccak256\":\"0x5586d9715d8fbdd48245220f13a96573555fd847a333869e862ae186802e0311\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3f34dbd5a0a8918120e226f549a8337bd6fc7176653159a85929ce6fe3d66e11\",\"dweb:/ipfs/QmQKnhRPMnhKBRLmV2C1BqAsPpQg8xVFXi7ZLuHU9XQ1BE\"]},\"src/libraries/GasPayingToken.sol\":{\"keccak256\":\"0xf19e06af2387c0febaa4a77f93e35dfaf367cac318c804b9023eba0cb5b35237\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c1b26566a54ea67c802261882e26322baf6100480613c6582337fb85d7d82d8\",\"dweb:/ipfs/QmPt5FLyGAeJVx1tDXHP55B91xgn4AwQk91WaCJkFV7kTw\"]},\"src/libraries/Hashing.sol\":{\"keccak256\":\"0x89c07a0ca102cbe57b4e082543f2dd6dae0e1fd4a87908a334bd076fc914e7b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://69c83489c9544ab442dc244c2feb2c6811b726a5eb5a509b97fc5ccb90b98c12\",\"dweb:/ipfs/QmPGGJeLasc1HWHzd6odvWcNvFPQrbYtDubZcv8yp1HLtF\"]},\"src/libraries/Predeploys.sol\":{\"keccak256\":\"0xbc21e07126b325cf053f1c5a26968f02fb0a0da503634044a8e84c9d642acb8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7af279cd7b3b12189894ae43f33d19ba84931670ba10b78c108b9d31b767c6b3\",\"dweb:/ipfs/QmWA4qha4WjQToAYhQbqVPe8WrniBAoktVNSSxCCqBraH3\"]},\"src/libraries/SafeCall.sol\":{\"keccak256\":\"0x0636a7abb242bb5d6f5606967c8929e6aa7e63468c1e2ce40ad4780d4c4bf94f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4daec2ac8f9907bbf84ef0a1c48f03bae8657619bc6f42b3a672f25c516f17a\",\"dweb:/ipfs/Qmf8gfRxBv8gEmCkP8YMPb2GGfj9QUnoNUyKE7UR2SWGnq\"]},\"src/libraries/Storage.sol\":{\"keccak256\":\"0x7ce27a05552aa69afa6b2ab6684dfe99f27366cf8ef2046baeb1fb62fff0022f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6a24f3ed56681720707a5ab0372fd67fcb1a4f6fb072c7140cda28bdb70f269\",\"dweb:/ipfs/QmW9uTpUULV4xmP7A7MoBDeDhVfQgmJG5qVUFGtXxWpWWK\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x75900d651301940d24c00d14f0b3b6cbd6dcf379173ceaa31d9bf5be934a9aa4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c2632c5bf4fa3982391c32110eec9fa07917b483b2442cbaf18bdde5bdb24e\",\"dweb:/ipfs/QmSUs6Amkeootf5gKGbKi4mJpvhN2U8i1ED6ef2dskV5xc\"]},\"src/libraries/rlp/RLPErrors.sol\":{\"keccak256\":\"0x2b7fa174e6c62962f7c3ce1960298d325ed0e5ff4ee3fd426848e88b4500eb26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5528dd355691e6e2dffa3ecf11388f51e3bd29f27693c5dcd11be182559ba47\",\"dweb:/ipfs/QmTqZ5ZzBPwLYg3JNZttHZYaXv5zyzQfakSz4B8sYkAz42\"]},\"src/libraries/rlp/RLPReader.sol\":{\"keccak256\":\"0x27cbbc74d603b301e0e4bc4d33bbbeb88e369f1a91191a33d89ea52360e003db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba58dfd78089a51f06638fa6c0d2287c6254907ad89c4ad58b6fbb331d5d5a96\",\"dweb:/ipfs/QmUjC5Pm2MxPgYm9DfW1MasHj5jz7xXvej88778QuUoNgp\"]},\"src/libraries/rlp/RLPWriter.sol\":{\"keccak256\":\"0x60ac401490f321c9c55e996a2c65151cd5e60de5f8f297e7c94d541c29820bb6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://070f5814db07e4a89173d44a36d90e4261ce530f7336034c01635347f2c2d88b\",\"dweb:/ipfs/QmXqr9yW5Kc8MYgr5wSehU5AiqS9pZ4FKxv7vwiwpZCcyV\"]},\"src/libraries/trie/MerkleTrie.sol\":{\"keccak256\":\"0xf8ba770ee6666e73ae43184c700e9c704b2c4ace71f9e3c2227ddc11a8148b4c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4702ccee1fe44aea3ee01d59e6152eb755da083f786f00947fec4437c064fe74\",\"dweb:/ipfs/QmQjFj5J7hrEM1dxJjFszzW2Cs7g7eMhYNBXonF2DXBstE\"]},\"src/libraries/trie/SecureMerkleTrie.sol\":{\"keccak256\":\"0xeaff8315cfd21197bc6bc859c2decf5d4f4838c9c357c502cdf2b1eac863d288\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79dcdcaa560aea51d138da4f5dc553a1808b6de090b2dc1629f18375edbff681\",\"dweb:/ipfs/QmbE4pUPhf5fLKW4W6cEjhQs55gEDvHmbmoBqkW1yz3bnw\"]},\"src/universal/CrossDomainMessenger.sol\":{\"keccak256\":\"0xc6a6b5488294c0e36fd830f412cb0b3f40039a70a9b194a3795b4a29683419f2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e92cd0f6faa2f2654a80dd86d7cbbdb1d9be424f1977e83c301dd65705c32163\",\"dweb:/ipfs/QmVv3EhKikz2vmK4NWi6xEBVusaAs4nWM3owoRV7wgba8V\"]},\"src/universal/ISemver.sol\":{\"keccak256\":\"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a\",\"dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR\"]},\"src/vendor/AddressAliasHelper.sol\":{\"keccak256\":\"0x6ecb83b4ec80fbe49c22f4f95d90482de64660ef5d422a19f4d4b04df31c1237\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1d0885be6e473962f9a0622176a22300165ac0cc1a1d7f2e22b11c3d656ace88\",\"dweb:/ipfs/QmPRa3KmRpXW5P9ykveKRDgYN5zYo4cYLAYSnoqHX3KnXR\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"bytes32","name":"msgHash","type":"bytes32","indexed":true}],"type":"event","name":"FailedRelayedMessage","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"msgHash","type":"bytes32","indexed":true}],"type":"event","name":"RelayedMessage","anonymous":false},{"inputs":[{"internalType":"address","name":"target","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"bytes","name":"message","type":"bytes","indexed":false},{"internalType":"uint256","name":"messageNonce","type":"uint256","indexed":false},{"internalType":"uint256","name":"gasLimit","type":"uint256","indexed":false}],"type":"event","name":"SentMessage","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"SentMessageExtension1","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MESSAGE_VERSION","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MIN_GAS_CALLDATA_OVERHEAD","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MIN_GAS_DYNAMIC_OVERHEAD_DENOMINATOR","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MIN_GAS_DYNAMIC_OVERHEAD_NUMERATOR","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OTHER_MESSENGER","outputs":[{"internalType":"contract CrossDomainMessenger","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"PORTAL","outputs":[{"internalType":"contract OptimismPortal","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"RELAY_CALL_OVERHEAD","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"RELAY_CONSTANT_OVERHEAD","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"RELAY_GAS_CHECK_BUFFER","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"RELAY_GAS_CHECK_BUFFER_INCLUDING_APPROVAL","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"RELAY_RESERVED_GAS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"uint32","name":"_minGasLimit","type":"uint32"}],"stateMutability":"pure","type":"function","name":"baseGas","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"failedMessages","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"contract SuperchainConfig","name":"_superchainConfig","type":"address"},{"internalType":"contract OptimismPortal","name":"_portal","type":"address"},{"internalType":"contract SystemConfig","name":"_systemConfig","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"messageNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nativeTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onApprove","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"otherMessenger","outputs":[{"internalType":"contract CrossDomainMessenger","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"portal","outputs":[{"internalType":"contract OptimismPortal","name":"","type":"address"}]},{"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":"_minGasLimit","type":"uint256"},{"internalType":"bytes","name":"_message","type":"bytes"}],"stateMutability":"payable","type":"function","name":"relayMessage"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"uint32","name":"_minGasLimit","type":"uint32"}],"stateMutability":"payable","type":"function","name":"sendMessage"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"uint32","name":"_minGasLimit","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"sendNativeTokenMessage"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"successfulMessages","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"superchainConfig","outputs":[{"internalType":"contract SuperchainConfig","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"pure","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"systemConfig","outputs":[{"internalType":"contract SystemConfig","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"version","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"xDomainMessageSender","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"OTHER_MESSENGER()":{"custom:legacy":"","returns":{"_0":"CrossDomainMessenger contract on the other chain."}},"PORTAL()":{"custom:legacy":"","returns":{"_0":"Contract of the OptimismPortal on this chain."}},"baseGas(bytes,uint32)":{"params":{"_message":"Message to compute the amount of required gas for.","_minGasLimit":"Minimum desired gas limit when message goes to target."},"returns":{"_0":"Amount of gas required to guarantee message receipt."}},"initialize(address,address,address)":{"params":{"_portal":"Contract of the OptimismPortal contract on this network.","_superchainConfig":"Contract of the SuperchainConfig contract on this network.","_systemConfig":"Contract of the SystemConfig contract on this network."}},"messageNonce()":{"returns":{"_0":"Nonce of the next message to be sent, with added message version."}},"nativeTokenAddress()":{"returns":{"_0":"address The address of native token"}},"onApprove(address,address,uint256,bytes)":{"params":{"_amount":"Approved amount","_data":"Data used in OnApprove contract","_owner":"Account that called approveAndCall"}},"paused()":{"returns":{"_0":"Whether or not the contract is paused."}},"relayMessage(uint256,address,address,uint256,uint256,bytes)":{"params":{"_message":"Message to send to the target.","_minGasLimit":"Minimum amount of gas that the message can be executed with.","_nonce":"Nonce of the message being relayed.","_sender":"Address of the user who sent the message.","_target":"Address that the message is targeted at.","_value":"Native token value to send with the message."}},"sendMessage(address,bytes,uint32)":{"params":{"_message":"Message to trigger the target address with.","_minGasLimit":"Minimum gas limit that the message can be executed with.","_target":"Target contract or wallet address."}},"sendNativeTokenMessage(address,uint256,bytes,uint32)":{"params":{"_amount":"Amount of deposit native token.","_message":"Message to trigger the target address with.","_minGasLimit":"Minimum gas limit that the message can be executed with.","_target":"Target contract or wallet address."}},"xDomainMessageSender()":{"returns":{"_0":"Address of the sender of the currently executing message on the other chain."}}},"version":1},"userdoc":{"kind":"user","methods":{"MESSAGE_VERSION()":{"notice":"Current message version identifier."},"MIN_GAS_CALLDATA_OVERHEAD()":{"notice":"Extra gas added to base gas for each byte of calldata in a message."},"MIN_GAS_DYNAMIC_OVERHEAD_DENOMINATOR()":{"notice":"Denominator for dynamic overhead added to the base gas for a message."},"MIN_GAS_DYNAMIC_OVERHEAD_NUMERATOR()":{"notice":"Numerator for dynamic overhead added to the base gas for a message."},"OTHER_MESSENGER()":{"notice":"Retrieves the address of the paired CrossDomainMessenger contract on the other chain         Public getter is legacy and will be removed in the future. Use `otherMessenger()` instead."},"PORTAL()":{"notice":"Getter function for the OptimismPortal contract on this chain.         Public getter is legacy and will be removed in the future. Use `portal()` instead."},"RELAY_CALL_OVERHEAD()":{"notice":"Gas reserved for performing the external call in `relayMessage`."},"RELAY_CONSTANT_OVERHEAD()":{"notice":"Constant overhead added to the base gas for a message."},"RELAY_GAS_CHECK_BUFFER()":{"notice":"Gas reserved for the execution between the `hasMinGas` check and the external         call in `relayMessage`."},"RELAY_GAS_CHECK_BUFFER_INCLUDING_APPROVAL()":{"notice":"Gas reserved for the execution between the `hasMinGas` check and the external         call in `relayMessage` on L1 (include gas for the approve() function)"},"RELAY_RESERVED_GAS()":{"notice":"Gas reserved for finalizing the execution of `relayMessage` after the safe call."},"baseGas(bytes,uint32)":{"notice":"Computes the amount of gas required to guarantee that a given message will be         received on the other chain without running out of gas. Guaranteeing that a message         will not run out of gas is important because this ensures that a message can always         be replayed on the other chain if it fails to execute completely."},"constructor":{"notice":"Constructs the L1CrossDomainMessenger contract."},"failedMessages(bytes32)":{"notice":"Mapping of message hashes to a boolean if and only if the message has failed to be         executed at least once. A message will not be present in this mapping if it         successfully executed on the first attempt."},"initialize(address,address,address)":{"notice":"Initializes the contract."},"messageNonce()":{"notice":"Retrieves the next message nonce. Message version will be added to the upper two         bytes of the message nonce. Message version allows us to treat messages as having         different structures."},"nativeTokenAddress()":{"notice":"Getter function for address of native token on this network"},"onApprove(address,address,uint256,bytes)":{"notice":"ERC20 onApprove callback"},"otherMessenger()":{"notice":"CrossDomainMessenger contract on the other chain."},"paused()":{"notice":"This function should return true if the contract is paused.         On L1 this function will check the SuperchainConfig for its paused status.         On L2 this function should be a no-op."},"portal()":{"notice":"Contract of the OptimismPortal."},"relayMessage(uint256,address,address,uint256,uint256,bytes)":{"notice":"Relays a message that was sent by the other CrossDomainMessenger contract. Can only         be executed via cross-chain call from the other messenger OR if the message was         already received once and is currently being replayed."},"sendMessage(address,bytes,uint32)":{"notice":"Sends a message to some target address on the other chain. Note that if the call         always reverts, then the message will be unrelayable, and any ETH sent will be         permanently locked. The same will occur if the target on the other chain is         considered unsafe (see the _isUnsafeTarget() function)."},"sendNativeTokenMessage(address,uint256,bytes,uint32)":{"notice":"Sends a deposit native token message to some target address on the other chain. Note that if the call         always reverts, then the message will be unrelayable, and any ETH sent will be         permanently locked. The same will occur if the target on the other chain is         considered unsafe (see the _isUnsafeTarget() function)."},"successfulMessages(bytes32)":{"notice":"Mapping of message hashes to boolean receipt values. Note that a message will only         be present in this mapping if it has successfully been relayed on this chain, and         can therefore not be relayed again."},"superchainConfig()":{"notice":"Contract of the SuperchainConfig."},"systemConfig()":{"notice":"Address of the SystemConfig contract."},"version()":{"notice":"Semantic version."},"xDomainMessageSender()":{"notice":"Retrieves the address of the contract or wallet that initiated the currently         executing message on the other chain. Will throw an error if there is no message         currently being executed. Allows the recipient of a call to see who triggered it."}},"version":1}},"settings":{"remappings":["@lib-keccak/=lib/lib-keccak/contracts/lib/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady/=lib/solady/src/","automate/=lib/automate/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","gelato/=lib/automate/contracts/","hardhat/=lib/automate/node_modules/hardhat/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/","prb-test/=lib/automate/lib/prb-test/src/","prb/-est/=lib/automate/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/contracts/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/L1/L1CrossDomainMessenger.sol":"L1CrossDomainMessenger"},"evmVersion":"london","libraries":{"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker":"0x4200000000000000000000000000000000000776"}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66","urls":["bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f","dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x24b04b8aacaaf1a4a0719117b29c9c3647b1f479c5ac2a60f5ff1bb6d839c238","urls":["bzz-raw://43e46da9d9f49741ecd876a269e71bc7494058d7a8e9478429998adb5bc3eaa0","dweb:/ipfs/QmUtp4cqzf22C5rJ76AabKADquGWcjsc33yjYXxXC4sDvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol":{"keccak256":"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329","urls":["bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95","dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x032807210d1d7d218963d7355d62e021a84bf1b3339f4f50be2f63b53cccaf29","urls":["bzz-raw://11756f42121f6541a35a8339ea899ee7514cfaa2e6d740625fcc844419296aa6","dweb:/ipfs/QmekMuk6BY4DAjzeXr4MSbKdgoqqsZnA8JPtuyWc6CwXHf"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xd15c3e400531f00203839159b2b8e7209c5158b35618f570c695b7e47f12e9f0","urls":["bzz-raw://b600b852e0597aa69989cc263111f02097e2827edc1bdc70306303e3af5e9929","dweb:/ipfs/QmU4WfM28A1nDqghuuGeFmN3CnVrk6opWtiF65K4vhFPeC"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb3ebde1c8d27576db912d87c3560dab14adfb9cd001be95890ec4ba035e652e7","urls":["bzz-raw://a709421c4f5d4677db8216055d2d4dac96a613efdb08178a9f7041f0c5cef689","dweb:/ipfs/QmYs2rStvVLDnSJs8HgaMD1ABwoKKWdiVbQyNfLfFWTjTy"],"license":"MIT"},"lib/solady/src/utils/LibString.sol":{"keccak256":"0x74ec81acbea6db4afe149ab51e26961bcb801af42f7af98242be71b866066200","urls":["bzz-raw://16bb49824fcfa9667aeed0eb515fdefda1016225085cf78ed852078c67168229","dweb:/ipfs/QmZ59xrx5QLSx5N5CiTLrfwsPKR7kpK4RRpiEWSMEpvDzQ"],"license":"MIT"},"lib/solmate/src/utils/FixedPointMathLib.sol":{"keccak256":"0x622fcd8a49e132df5ec7651cc6ae3aaf0cf59bdcd67a9a804a1b9e2485113b7d","urls":["bzz-raw://af77088eb606427d4c55e578984a615779c86bc30646a20f7bb27299ba390f7c","dweb:/ipfs/QmZGQdhdQDtHc7gZXWrKXgA3govc74X8U63BiWhPQK3mK8"],"license":"MIT"},"src/L1/L1CrossDomainMessenger.sol":{"keccak256":"0xd68f7101fd00c5b1fbb78c05df9687e8647c767eb7c147b47ad976c881938ce9","urls":["bzz-raw://613cfbc4213e1cc257bab3233af114fe4a600882e5d4fe703f8826ecf3085794","dweb:/ipfs/QmbTPEsK49bPgPCSxsJadD3G45Rj9wKQ9peovFKG22oFgY"],"license":"MIT"},"src/L1/L2OutputOracle.sol":{"keccak256":"0x342c5084f3c640c90530122bd78372c011d6162e698dd8c8daec9496fef01d42","urls":["bzz-raw://8700a3d486bd62cbb861ff80175b8040336940515791073af6a036db7c2df303","dweb:/ipfs/QmSGKTH84rVHWgMg4d6GQZCmCJ16KuUuTsMwPMDdJxCsww"],"license":"MIT"},"src/L1/OnApprove.sol":{"keccak256":"0x40cee21f13053d860ab0aaaf77ff596f7131cb39ab21963d076e9e276492d31a","urls":["bzz-raw://b384a3225e25c0232aaa775d0f4df514ad7423228810e157ba921b736421c6b1","dweb:/ipfs/QmcPTPwvhqtHLQAgntzVdqeptDDgmnEafnZwgAK7D7AoV1"],"license":"MIT"},"src/L1/OptimismPortal.sol":{"keccak256":"0xb9c5a2ce9544e03df45181f151d1bf0064939f43206e8a9f0567827e36b3121e","urls":["bzz-raw://b79fbc86f7ae8d131a596dfce23b23ce4b21fa71c5210dbe969c196590af1832","dweb:/ipfs/QmWc9sPFpGr3nQyWVUxjhdB1CKdp3fFgSnYbYignhGSf7n"],"license":"MIT"},"src/L1/ResourceMetering.sol":{"keccak256":"0x069f3449a0408d7a9d05f3a5e01cce5e9c746591d8f3c87b43fcf9723bf7301d","urls":["bzz-raw://124fff8e3b3c5992f04f1c92ceac09b003b880ec43031ef4ce816b2750184805","dweb:/ipfs/QmfRxhi3hRdAhFkMLjX6RgHeFnWtkTJveQe8DVJcvRv3Er"],"license":"MIT"},"src/L1/SuperchainConfig.sol":{"keccak256":"0x5fab874f980fe3e52c3398ddd25b655c56af0c98c15588b2ad9ebf30671d859d","urls":["bzz-raw://4e0aa613d38eceb621f8569fc714f521bc1f2df3d029552186ab3cdf2ee5d53f","dweb:/ipfs/QmZDzFxhTXLW79eohQbr1nghNh3oNC4CUfH7uMX8CsjVAB"],"license":"MIT"},"src/L1/SystemConfig.sol":{"keccak256":"0xb7e58757a691bb72ddd0d2e4c2d11ff097985d92eb38a16bbcd2d4e1c6aa8f05","urls":["bzz-raw://b9f0a9f317a6534fbd646d52d6e22441dab52da4c285df5dd63f377c6740c7ec","dweb:/ipfs/QmNz5NFRwFas2SRwC5gAvxspffh5vZy6wEzr77ofd3AWaB"],"license":"MIT"},"src/libraries/Arithmetic.sol":{"keccak256":"0x91345e053584f82ad04d682ba821cf3ede808304f5b2a88116a894cf692c21db","urls":["bzz-raw://005e3c42d2edfca0a506cbda94d3b0104eddf20c00bd1bd25272f53f2ef74c72","dweb:/ipfs/QmdaW6Nge6NKoGvFqRpQjBpM2fXpc5y8WpZyBnDnKicdJq"],"license":"MIT"},"src/libraries/Burn.sol":{"keccak256":"0x8676782233b8ee5735e9f09225a40acb8d9bdcb6b223ef356fda91058c24ed14","urls":["bzz-raw://53956d4ade06cd8c76b81c71a35a5d3f139c4f992753deac68edb3232bfe5265","dweb:/ipfs/QmX9H6eVXpUNDEXcGDYgTAksR2quinGXDds275svLRt2fd"],"license":"MIT"},"src/libraries/Bytes.sol":{"keccak256":"0x827f47d123b0fdf3b08816d5b33831811704dbf4e554e53f2269354f6bba8859","urls":["bzz-raw://3137ac7204d30a245a8b0d67aa6da5286f1bd8c90379daab561f84963b6db782","dweb:/ipfs/QmWRhisw3axJK833gUScs23ETh2MLFbVzzqzYVMKSDN3S9"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x0a52edff4eb90806c5fd570e9c4be2e04327facb9af24e8d15c6cdea9f7a6395","urls":["bzz-raw://9b009c00e43bfc2794ee8954a57e37084eb6fdc05c215aab19f8d697d1a86ca5","dweb:/ipfs/QmQNzUfs95W6dLVPrHj8ik51uhiD5acihYcxZBDhpTCw4f"],"license":"MIT"},"src/libraries/Encoding.sol":{"keccak256":"0x5586d9715d8fbdd48245220f13a96573555fd847a333869e862ae186802e0311","urls":["bzz-raw://3f34dbd5a0a8918120e226f549a8337bd6fc7176653159a85929ce6fe3d66e11","dweb:/ipfs/QmQKnhRPMnhKBRLmV2C1BqAsPpQg8xVFXi7ZLuHU9XQ1BE"],"license":"MIT"},"src/libraries/GasPayingToken.sol":{"keccak256":"0xf19e06af2387c0febaa4a77f93e35dfaf367cac318c804b9023eba0cb5b35237","urls":["bzz-raw://3c1b26566a54ea67c802261882e26322baf6100480613c6582337fb85d7d82d8","dweb:/ipfs/QmPt5FLyGAeJVx1tDXHP55B91xgn4AwQk91WaCJkFV7kTw"],"license":"MIT"},"src/libraries/Hashing.sol":{"keccak256":"0x89c07a0ca102cbe57b4e082543f2dd6dae0e1fd4a87908a334bd076fc914e7b8","urls":["bzz-raw://69c83489c9544ab442dc244c2feb2c6811b726a5eb5a509b97fc5ccb90b98c12","dweb:/ipfs/QmPGGJeLasc1HWHzd6odvWcNvFPQrbYtDubZcv8yp1HLtF"],"license":"MIT"},"src/libraries/Predeploys.sol":{"keccak256":"0xbc21e07126b325cf053f1c5a26968f02fb0a0da503634044a8e84c9d642acb8f","urls":["bzz-raw://7af279cd7b3b12189894ae43f33d19ba84931670ba10b78c108b9d31b767c6b3","dweb:/ipfs/QmWA4qha4WjQToAYhQbqVPe8WrniBAoktVNSSxCCqBraH3"],"license":"MIT"},"src/libraries/SafeCall.sol":{"keccak256":"0x0636a7abb242bb5d6f5606967c8929e6aa7e63468c1e2ce40ad4780d4c4bf94f","urls":["bzz-raw://a4daec2ac8f9907bbf84ef0a1c48f03bae8657619bc6f42b3a672f25c516f17a","dweb:/ipfs/Qmf8gfRxBv8gEmCkP8YMPb2GGfj9QUnoNUyKE7UR2SWGnq"],"license":"MIT"},"src/libraries/Storage.sol":{"keccak256":"0x7ce27a05552aa69afa6b2ab6684dfe99f27366cf8ef2046baeb1fb62fff0022f","urls":["bzz-raw://a6a24f3ed56681720707a5ab0372fd67fcb1a4f6fb072c7140cda28bdb70f269","dweb:/ipfs/QmW9uTpUULV4xmP7A7MoBDeDhVfQgmJG5qVUFGtXxWpWWK"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x75900d651301940d24c00d14f0b3b6cbd6dcf379173ceaa31d9bf5be934a9aa4","urls":["bzz-raw://99c2632c5bf4fa3982391c32110eec9fa07917b483b2442cbaf18bdde5bdb24e","dweb:/ipfs/QmSUs6Amkeootf5gKGbKi4mJpvhN2U8i1ED6ef2dskV5xc"],"license":"MIT"},"src/libraries/rlp/RLPErrors.sol":{"keccak256":"0x2b7fa174e6c62962f7c3ce1960298d325ed0e5ff4ee3fd426848e88b4500eb26","urls":["bzz-raw://f5528dd355691e6e2dffa3ecf11388f51e3bd29f27693c5dcd11be182559ba47","dweb:/ipfs/QmTqZ5ZzBPwLYg3JNZttHZYaXv5zyzQfakSz4B8sYkAz42"],"license":"MIT"},"src/libraries/rlp/RLPReader.sol":{"keccak256":"0x27cbbc74d603b301e0e4bc4d33bbbeb88e369f1a91191a33d89ea52360e003db","urls":["bzz-raw://ba58dfd78089a51f06638fa6c0d2287c6254907ad89c4ad58b6fbb331d5d5a96","dweb:/ipfs/QmUjC5Pm2MxPgYm9DfW1MasHj5jz7xXvej88778QuUoNgp"],"license":"MIT"},"src/libraries/rlp/RLPWriter.sol":{"keccak256":"0x60ac401490f321c9c55e996a2c65151cd5e60de5f8f297e7c94d541c29820bb6","urls":["bzz-raw://070f5814db07e4a89173d44a36d90e4261ce530f7336034c01635347f2c2d88b","dweb:/ipfs/QmXqr9yW5Kc8MYgr5wSehU5AiqS9pZ4FKxv7vwiwpZCcyV"],"license":"MIT"},"src/libraries/trie/MerkleTrie.sol":{"keccak256":"0xf8ba770ee6666e73ae43184c700e9c704b2c4ace71f9e3c2227ddc11a8148b4c","urls":["bzz-raw://4702ccee1fe44aea3ee01d59e6152eb755da083f786f00947fec4437c064fe74","dweb:/ipfs/QmQjFj5J7hrEM1dxJjFszzW2Cs7g7eMhYNBXonF2DXBstE"],"license":"MIT"},"src/libraries/trie/SecureMerkleTrie.sol":{"keccak256":"0xeaff8315cfd21197bc6bc859c2decf5d4f4838c9c357c502cdf2b1eac863d288","urls":["bzz-raw://79dcdcaa560aea51d138da4f5dc553a1808b6de090b2dc1629f18375edbff681","dweb:/ipfs/QmbE4pUPhf5fLKW4W6cEjhQs55gEDvHmbmoBqkW1yz3bnw"],"license":"MIT"},"src/universal/CrossDomainMessenger.sol":{"keccak256":"0xc6a6b5488294c0e36fd830f412cb0b3f40039a70a9b194a3795b4a29683419f2","urls":["bzz-raw://e92cd0f6faa2f2654a80dd86d7cbbdb1d9be424f1977e83c301dd65705c32163","dweb:/ipfs/QmVv3EhKikz2vmK4NWi6xEBVusaAs4nWM3owoRV7wgba8V"],"license":"MIT"},"src/universal/ISemver.sol":{"keccak256":"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44","urls":["bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a","dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR"],"license":"MIT"},"src/vendor/AddressAliasHelper.sol":{"keccak256":"0x6ecb83b4ec80fbe49c22f4f95d90482de64660ef5d422a19f4d4b04df31c1237","urls":["bzz-raw://1d0885be6e473962f9a0622176a22300165ac0cc1a1d7f2e22b11c3d656ace88","dweb:/ipfs/QmPRa3KmRpXW5P9ykveKRDgYN5zYo4cYLAYSnoqHX3KnXR"],"license":"Apache-2.0"}},"version":1},"storageLayout":{"storage":[{"astId":121212,"contract":"src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger","label":"spacer_0_0_20","offset":0,"slot":"0","type":"t_address"},{"astId":47581,"contract":"src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger","label":"_initialized","offset":20,"slot":"0","type":"t_uint8"},{"astId":47584,"contract":"src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger","label":"_initializing","offset":21,"slot":"0","type":"t_bool"},{"astId":121219,"contract":"src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger","label":"spacer_1_0_1600","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":121222,"contract":"src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger","label":"spacer_51_0_20","offset":0,"slot":"51","type":"t_address"},{"astId":121227,"contract":"src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger","label":"spacer_52_0_1568","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"},{"astId":121230,"contract":"src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger","label":"spacer_101_0_1","offset":0,"slot":"101","type":"t_bool"},{"astId":121235,"contract":"src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger","label":"spacer_102_0_1568","offset":0,"slot":"102","type":"t_array(t_uint256)49_storage"},{"astId":121238,"contract":"src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger","label":"spacer_151_0_32","offset":0,"slot":"151","type":"t_uint256"},{"astId":121243,"contract":"src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger","label":"spacer_152_0_1568","offset":0,"slot":"152","type":"t_array(t_uint256)49_storage"},{"astId":121248,"contract":"src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger","label":"spacer_201_0_32","offset":0,"slot":"201","type":"t_mapping(t_bytes32,t_bool)"},{"astId":121253,"contract":"src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger","label":"spacer_202_0_32","offset":0,"slot":"202","type":"t_mapping(t_bytes32,t_bool)"},{"astId":121302,"contract":"src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger","label":"successfulMessages","offset":0,"slot":"203","type":"t_mapping(t_bytes32,t_bool)"},{"astId":121305,"contract":"src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger","label":"xDomainMsgSender","offset":0,"slot":"204","type":"t_address"},{"astId":121308,"contract":"src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger","label":"msgNonce","offset":0,"slot":"205","type":"t_uint240"},{"astId":121313,"contract":"src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger","label":"failedMessages","offset":0,"slot":"206","type":"t_mapping(t_bytes32,t_bool)"},{"astId":121317,"contract":"src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger","label":"otherMessenger","offset":0,"slot":"207","type":"t_contract(CrossDomainMessenger)121789"},{"astId":121322,"contract":"src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger","label":"__gap","offset":0,"slot":"208","type":"t_array(t_uint256)43_storage"},{"astId":87446,"contract":"src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger","label":"superchainConfig","offset":0,"slot":"251","type":"t_contract(SuperchainConfig)94870"},{"astId":87450,"contract":"src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger","label":"portal","offset":0,"slot":"252","type":"t_contract(OptimismPortal)92796"},{"astId":87454,"contract":"src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger","label":"systemConfig","offset":0,"slot":"253","type":"t_contract(SystemConfig)95931"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)43_storage":{"encoding":"inplace","label":"uint256[43]","numberOfBytes":"1376","base":"t_uint256"},"t_array(t_uint256)49_storage":{"encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568","base":"t_uint256"},"t_array(t_uint256)50_storage":{"encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600","base":"t_uint256"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_contract(CrossDomainMessenger)121789":{"encoding":"inplace","label":"contract CrossDomainMessenger","numberOfBytes":"20"},"t_contract(OptimismPortal)92796":{"encoding":"inplace","label":"contract OptimismPortal","numberOfBytes":"20"},"t_contract(SuperchainConfig)94870":{"encoding":"inplace","label":"contract SuperchainConfig","numberOfBytes":"20"},"t_contract(SystemConfig)95931":{"encoding":"inplace","label":"contract SystemConfig","numberOfBytes":"20"},"t_mapping(t_bytes32,t_bool)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => bool)","numberOfBytes":"32","value":"t_bool"},"t_uint240":{"encoding":"inplace","label":"uint240","numberOfBytes":"30"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"version":1,"kind":"user","methods":{"MESSAGE_VERSION()":{"notice":"Current message version identifier."},"MIN_GAS_CALLDATA_OVERHEAD()":{"notice":"Extra gas added to base gas for each byte of calldata in a message."},"MIN_GAS_DYNAMIC_OVERHEAD_DENOMINATOR()":{"notice":"Denominator for dynamic overhead added to the base gas for a message."},"MIN_GAS_DYNAMIC_OVERHEAD_NUMERATOR()":{"notice":"Numerator for dynamic overhead added to the base gas for a message."},"OTHER_MESSENGER()":{"notice":"Retrieves the address of the paired CrossDomainMessenger contract on the other chain         Public getter is legacy and will be removed in the future. Use `otherMessenger()` instead."},"PORTAL()":{"notice":"Getter function for the OptimismPortal contract on this chain.         Public getter is legacy and will be removed in the future. Use `portal()` instead."},"RELAY_CALL_OVERHEAD()":{"notice":"Gas reserved for performing the external call in `relayMessage`."},"RELAY_CONSTANT_OVERHEAD()":{"notice":"Constant overhead added to the base gas for a message."},"RELAY_GAS_CHECK_BUFFER()":{"notice":"Gas reserved for the execution between the `hasMinGas` check and the external         call in `relayMessage`."},"RELAY_GAS_CHECK_BUFFER_INCLUDING_APPROVAL()":{"notice":"Gas reserved for the execution between the `hasMinGas` check and the external         call in `relayMessage` on L1 (include gas for the approve() function)"},"RELAY_RESERVED_GAS()":{"notice":"Gas reserved for finalizing the execution of `relayMessage` after the safe call."},"baseGas(bytes,uint32)":{"notice":"Computes the amount of gas required to guarantee that a given message will be         received on the other chain without running out of gas. Guaranteeing that a message         will not run out of gas is important because this ensures that a message can always         be replayed on the other chain if it fails to execute completely."},"constructor":{"notice":"Constructs the L1CrossDomainMessenger contract."},"failedMessages(bytes32)":{"notice":"Mapping of message hashes to a boolean if and only if the message has failed to be         executed at least once. A message will not be present in this mapping if it         successfully executed on the first attempt."},"initialize(address,address,address)":{"notice":"Initializes the contract."},"messageNonce()":{"notice":"Retrieves the next message nonce. Message version will be added to the upper two         bytes of the message nonce. Message version allows us to treat messages as having         different structures."},"nativeTokenAddress()":{"notice":"Getter function for address of native token on this network"},"onApprove(address,address,uint256,bytes)":{"notice":"ERC20 onApprove callback"},"otherMessenger()":{"notice":"CrossDomainMessenger contract on the other chain."},"paused()":{"notice":"This function should return true if the contract is paused.         On L1 this function will check the SuperchainConfig for its paused status.         On L2 this function should be a no-op."},"portal()":{"notice":"Contract of the OptimismPortal."},"relayMessage(uint256,address,address,uint256,uint256,bytes)":{"notice":"Relays a message that was sent by the other CrossDomainMessenger contract. Can only         be executed via cross-chain call from the other messenger OR if the message was         already received once and is currently being replayed."},"sendMessage(address,bytes,uint32)":{"notice":"Sends a message to some target address on the other chain. Note that if the call         always reverts, then the message will be unrelayable, and any ETH sent will be         permanently locked. The same will occur if the target on the other chain is         considered unsafe (see the _isUnsafeTarget() function)."},"sendNativeTokenMessage(address,uint256,bytes,uint32)":{"notice":"Sends a deposit native token message to some target address on the other chain. Note that if the call         always reverts, then the message will be unrelayable, and any ETH sent will be         permanently locked. The same will occur if the target on the other chain is         considered unsafe (see the _isUnsafeTarget() function)."},"successfulMessages(bytes32)":{"notice":"Mapping of message hashes to boolean receipt values. Note that a message will only         be present in this mapping if it has successfully been relayed on this chain, and         can therefore not be relayed again."},"superchainConfig()":{"notice":"Contract of the SuperchainConfig."},"systemConfig()":{"notice":"Address of the SystemConfig contract."},"version()":{"notice":"Semantic version."},"xDomainMessageSender()":{"notice":"Retrieves the address of the contract or wallet that initiated the currently         executing message on the other chain. Will throw an error if there is no message         currently being executed. Allows the recipient of a call to see who triggered it."}},"events":{"FailedRelayedMessage(bytes32)":{"notice":"Emitted whenever a message fails to be relayed on this chain."},"RelayedMessage(bytes32)":{"notice":"Emitted whenever a message is successfully relayed on this chain."},"SentMessage(address,address,bytes,uint256,uint256)":{"notice":"Emitted whenever a message is sent to the other chain."},"SentMessageExtension1(address,uint256)":{"notice":"Additional event data to emit, required as of Bedrock. Cannot be merged with the         SentMessage event without breaking the ABI of this contract, this is good enough."}},"notice":"The L1CrossDomainMessenger is a message passing interface between L1 and L2 responsible         for sending and receiving data on the L1 side. Users are encouraged to use this         interface instead of interacting with lower-level contracts directly."},"devdoc":{"version":1,"kind":"dev","methods":{"OTHER_MESSENGER()":{"returns":{"_0":"CrossDomainMessenger contract on the other chain."}},"PORTAL()":{"returns":{"_0":"Contract of the OptimismPortal on this chain."}},"baseGas(bytes,uint32)":{"params":{"_message":"Message to compute the amount of required gas for.","_minGasLimit":"Minimum desired gas limit when message goes to target."},"returns":{"_0":"Amount of gas required to guarantee message receipt."}},"initialize(address,address,address)":{"params":{"_portal":"Contract of the OptimismPortal contract on this network.","_superchainConfig":"Contract of the SuperchainConfig contract on this network.","_systemConfig":"Contract of the SystemConfig contract on this network."}},"messageNonce()":{"returns":{"_0":"Nonce of the next message to be sent, with added message version."}},"nativeTokenAddress()":{"returns":{"_0":"address The address of native token"}},"onApprove(address,address,uint256,bytes)":{"params":{"_amount":"Approved amount","_data":"Data used in OnApprove contract","_owner":"Account that called approveAndCall"}},"paused()":{"returns":{"_0":"Whether or not the contract is paused."}},"relayMessage(uint256,address,address,uint256,uint256,bytes)":{"params":{"_message":"Message to send to the target.","_minGasLimit":"Minimum amount of gas that the message can be executed with.","_nonce":"Nonce of the message being relayed.","_sender":"Address of the user who sent the message.","_target":"Address that the message is targeted at.","_value":"Native token value to send with the message."}},"sendMessage(address,bytes,uint32)":{"params":{"_message":"Message to trigger the target address with.","_minGasLimit":"Minimum gas limit that the message can be executed with.","_target":"Target contract or wallet address."}},"sendNativeTokenMessage(address,uint256,bytes,uint32)":{"params":{"_amount":"Amount of deposit native token.","_message":"Message to trigger the target address with.","_minGasLimit":"Minimum gas limit that the message can be executed with.","_target":"Target contract or wallet address."}},"xDomainMessageSender()":{"returns":{"_0":"Address of the sender of the currently executing message on the other chain."}}}},"ast":{"absolutePath":"src/L1/L1CrossDomainMessenger.sol","id":88125,"exportedSymbols":{"Constants":[112830],"CrossDomainMessenger":[121789],"Encoding":[113256],"Hashing":[113767],"IERC20":[50993],"ISemver":[122319],"L1CrossDomainMessenger":[88124],"OnApprove":[91828],"OptimismPortal":[92796],"Predeploys":[114341],"SafeCall":[114740],"SafeERC20":[52188],"SuperchainConfig":[94870],"SystemConfig":[95931]},"nodeType":"SourceUnit","src":"32:15405:141","nodes":[{"id":87405,"nodeType":"PragmaDirective","src":"32:23:141","nodes":[],"literals":["solidity","0.8",".15"]},{"id":87407,"nodeType":"ImportDirective","src":"57:72:141","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","nameLocation":"-1:-1:-1","scope":88125,"sourceUnit":50994,"symbolAliases":[{"foreign":{"id":87406,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50993,"src":"66:6:141","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":87409,"nodeType":"ImportDirective","src":"130:84:141","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","nameLocation":"-1:-1:-1","scope":88125,"sourceUnit":52189,"symbolAliases":[{"foreign":{"id":87408,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52188,"src":"139:9:141","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":87411,"nodeType":"ImportDirective","src":"215:58:141","nodes":[],"absolutePath":"src/libraries/Predeploys.sol","file":"src/libraries/Predeploys.sol","nameLocation":"-1:-1:-1","scope":88125,"sourceUnit":114342,"symbolAliases":[{"foreign":{"id":87410,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114341,"src":"224:10:141","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":87413,"nodeType":"ImportDirective","src":"274:59:141","nodes":[],"absolutePath":"src/L1/OptimismPortal.sol","file":"src/L1/OptimismPortal.sol","nameLocation":"-1:-1:-1","scope":88125,"sourceUnit":92797,"symbolAliases":[{"foreign":{"id":87412,"name":"OptimismPortal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":92796,"src":"283:14:141","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":87415,"nodeType":"ImportDirective","src":"334:78:141","nodes":[],"absolutePath":"src/universal/CrossDomainMessenger.sol","file":"src/universal/CrossDomainMessenger.sol","nameLocation":"-1:-1:-1","scope":88125,"sourceUnit":121790,"symbolAliases":[{"foreign":{"id":87414,"name":"CrossDomainMessenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121789,"src":"343:20:141","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":87417,"nodeType":"ImportDirective","src":"413:52:141","nodes":[],"absolutePath":"src/universal/ISemver.sol","file":"src/universal/ISemver.sol","nameLocation":"-1:-1:-1","scope":88125,"sourceUnit":122320,"symbolAliases":[{"foreign":{"id":87416,"name":"ISemver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122319,"src":"422:7:141","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":87419,"nodeType":"ImportDirective","src":"466:63:141","nodes":[],"absolutePath":"src/L1/SuperchainConfig.sol","file":"src/L1/SuperchainConfig.sol","nameLocation":"-1:-1:-1","scope":88125,"sourceUnit":94871,"symbolAliases":[{"foreign":{"id":87418,"name":"SuperchainConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":94870,"src":"475:16:141","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":87421,"nodeType":"ImportDirective","src":"530:56:141","nodes":[],"absolutePath":"src/libraries/Constants.sol","file":"src/libraries/Constants.sol","nameLocation":"-1:-1:-1","scope":88125,"sourceUnit":112831,"symbolAliases":[{"foreign":{"id":87420,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":112830,"src":"539:9:141","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":87423,"nodeType":"ImportDirective","src":"587:54:141","nodes":[],"absolutePath":"src/libraries/SafeCall.sol","file":"src/libraries/SafeCall.sol","nameLocation":"-1:-1:-1","scope":88125,"sourceUnit":114741,"symbolAliases":[{"foreign":{"id":87422,"name":"SafeCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114740,"src":"596:8:141","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":87425,"nodeType":"ImportDirective","src":"642:52:141","nodes":[],"absolutePath":"src/libraries/Hashing.sol","file":"src/libraries/Hashing.sol","nameLocation":"-1:-1:-1","scope":88125,"sourceUnit":113768,"symbolAliases":[{"foreign":{"id":87424,"name":"Hashing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113767,"src":"651:7:141","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":87427,"nodeType":"ImportDirective","src":"695:54:141","nodes":[],"absolutePath":"src/libraries/Encoding.sol","file":"src/libraries/Encoding.sol","nameLocation":"-1:-1:-1","scope":88125,"sourceUnit":113257,"symbolAliases":[{"foreign":{"id":87426,"name":"Encoding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113256,"src":"704:8:141","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":87429,"nodeType":"ImportDirective","src":"750:55:141","nodes":[],"absolutePath":"src/L1/SystemConfig.sol","file":"src/L1/SystemConfig.sol","nameLocation":"-1:-1:-1","scope":88125,"sourceUnit":95932,"symbolAliases":[{"foreign":{"id":87428,"name":"SystemConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":95931,"src":"759:12:141","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":87431,"nodeType":"ImportDirective","src":"806:44:141","nodes":[],"absolutePath":"src/L1/OnApprove.sol","file":"./OnApprove.sol","nameLocation":"-1:-1:-1","scope":88125,"sourceUnit":91829,"symbolAliases":[{"foreign":{"id":87430,"name":"OnApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91828,"src":"815:9:141","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":88124,"nodeType":"ContractDefinition","src":"1180:14256:141","nodes":[{"id":87442,"nodeType":"UsingForDirective","src":"1262:27:141","nodes":[],"global":false,"libraryName":{"id":87439,"name":"SafeERC20","nodeType":"IdentifierPath","referencedDeclaration":52188,"src":"1268:9:141"},"typeName":{"id":87441,"nodeType":"UserDefinedTypeName","pathNode":{"id":87440,"name":"IERC20","nodeType":"IdentifierPath","referencedDeclaration":50993,"src":"1282:6:141"},"referencedDeclaration":50993,"src":"1282:6:141","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$50993","typeString":"contract IERC20"}}},{"id":87446,"nodeType":"VariableDeclaration","src":"1345:40:141","nodes":[],"constant":false,"documentation":{"id":87443,"nodeType":"StructuredDocumentation","src":"1295:45:141","text":"@notice Contract of the SuperchainConfig."},"functionSelector":"35e80ab3","mutability":"mutable","name":"superchainConfig","nameLocation":"1369:16:141","scope":88124,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_SuperchainConfig_$94870","typeString":"contract SuperchainConfig"},"typeName":{"id":87445,"nodeType":"UserDefinedTypeName","pathNode":{"id":87444,"name":"SuperchainConfig","nodeType":"IdentifierPath","referencedDeclaration":94870,"src":"1345:16:141"},"referencedDeclaration":94870,"src":"1345:16:141","typeDescriptions":{"typeIdentifier":"t_contract$_SuperchainConfig_$94870","typeString":"contract SuperchainConfig"}},"visibility":"public"},{"id":87450,"nodeType":"VariableDeclaration","src":"1473:28:141","nodes":[],"constant":false,"documentation":{"id":87447,"nodeType":"StructuredDocumentation","src":"1392:76:141","text":"@notice Contract of the OptimismPortal.\n @custom:network-specific"},"functionSelector":"6425666b","mutability":"mutable","name":"portal","nameLocation":"1495:6:141","scope":88124,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_OptimismPortal_$92796","typeString":"contract OptimismPortal"},"typeName":{"id":87449,"nodeType":"UserDefinedTypeName","pathNode":{"id":87448,"name":"OptimismPortal","nodeType":"IdentifierPath","referencedDeclaration":92796,"src":"1473:14:141"},"referencedDeclaration":92796,"src":"1473:14:141","typeDescriptions":{"typeIdentifier":"t_contract$_OptimismPortal_$92796","typeString":"contract OptimismPortal"}},"visibility":"public"},{"id":87454,"nodeType":"VariableDeclaration","src":"1595:32:141","nodes":[],"constant":false,"documentation":{"id":87451,"nodeType":"StructuredDocumentation","src":"1508:82:141","text":"@notice Address of the SystemConfig contract.\n @custom:network-specific"},"functionSelector":"33d7e2bd","mutability":"mutable","name":"systemConfig","nameLocation":"1615:12:141","scope":88124,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_SystemConfig_$95931","typeString":"contract SystemConfig"},"typeName":{"id":87453,"nodeType":"UserDefinedTypeName","pathNode":{"id":87452,"name":"SystemConfig","nodeType":"IdentifierPath","referencedDeclaration":95931,"src":"1595:12:141"},"referencedDeclaration":95931,"src":"1595:12:141","typeDescriptions":{"typeIdentifier":"t_contract$_SystemConfig_$95931","typeString":"contract SystemConfig"}},"visibility":"public"},{"id":87458,"nodeType":"VariableDeclaration","src":"1697:40:141","nodes":[],"baseFunctions":[122318],"constant":true,"documentation":{"id":87455,"nodeType":"StructuredDocumentation","src":"1634:58:141","text":"@notice Semantic version.\n @custom:semver 2.4.0"},"functionSelector":"54fd4d50","mutability":"constant","name":"version","nameLocation":"1720:7:141","scope":88124,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":87456,"name":"string","nodeType":"ElementaryTypeName","src":"1697:6:141","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"322e342e30","id":87457,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1730:7:141","typeDescriptions":{"typeIdentifier":"t_stringliteral_3cbe8f0bc44ea1577ffeb677fec04f61a421ffd7cb0cd1d47c2d0ca40a33fdc9","typeString":"literal_string \"2.4.0\""},"value":"2.4.0"},"visibility":"public"},{"id":87489,"nodeType":"FunctionDefinition","src":"1808:248:141","nodes":[],"body":{"id":87488,"nodeType":"Block","src":"1845:211:141","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30","id":87468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1924:1:141","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":87467,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1916:7:141","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":87466,"name":"address","nodeType":"ElementaryTypeName","src":"1916:7:141","typeDescriptions":{}}},"id":87469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1916:10:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":87465,"name":"SuperchainConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":94870,"src":"1899:16:141","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SuperchainConfig_$94870_$","typeString":"type(contract SuperchainConfig)"}},"id":87470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1899:28:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_SuperchainConfig_$94870","typeString":"contract SuperchainConfig"}},{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30","id":87476,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1981:1:141","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":87475,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1973:7:141","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":87474,"name":"address","nodeType":"ElementaryTypeName","src":"1973:7:141","typeDescriptions":{}}},"id":87477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1973:10:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":87473,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1965:8:141","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":87472,"name":"address","nodeType":"ElementaryTypeName","src":"1965:8:141","stateMutability":"payable","typeDescriptions":{}}},"id":87478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1965:19:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":87471,"name":"OptimismPortal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":92796,"src":"1950:14:141","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OptimismPortal_$92796_$","typeString":"type(contract OptimismPortal)"}},"id":87479,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1950:35:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OptimismPortal_$92796","typeString":"contract OptimismPortal"}},{"arguments":[{"arguments":[{"hexValue":"30","id":87483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2035:1:141","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":87482,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2027:7:141","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":87481,"name":"address","nodeType":"ElementaryTypeName","src":"2027:7:141","typeDescriptions":{}}},"id":87484,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2027:10:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":87480,"name":"SystemConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":95931,"src":"2014:12:141","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SystemConfig_$95931_$","typeString":"type(contract SystemConfig)"}},"id":87485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2014:24:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_SystemConfig_$95931","typeString":"contract SystemConfig"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SuperchainConfig_$94870","typeString":"contract SuperchainConfig"},{"typeIdentifier":"t_contract$_OptimismPortal_$92796","typeString":"contract OptimismPortal"},{"typeIdentifier":"t_contract$_SystemConfig_$95931","typeString":"contract SystemConfig"}],"id":87464,"name":"initialize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87524,"src":"1855:10:141","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_SuperchainConfig_$94870_$_t_contract$_OptimismPortal_$92796_$_t_contract$_SystemConfig_$95931_$returns$__$","typeString":"function (contract SuperchainConfig,contract OptimismPortal,contract SystemConfig)"}},"id":87486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":["_superchainConfig","_portal","_systemConfig"],"nodeType":"FunctionCall","src":"1855:194:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":87487,"nodeType":"ExpressionStatement","src":"1855:194:141"}]},"documentation":{"id":87459,"nodeType":"StructuredDocumentation","src":"1744:59:141","text":"@notice Constructs the L1CrossDomainMessenger contract."},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[],"id":87462,"kind":"baseConstructorSpecifier","modifierName":{"id":87461,"name":"CrossDomainMessenger","nodeType":"IdentifierPath","referencedDeclaration":121789,"src":"1822:20:141"},"nodeType":"ModifierInvocation","src":"1822:22:141"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":87460,"nodeType":"ParameterList","parameters":[],"src":"1819:2:141"},"returnParameters":{"id":87463,"nodeType":"ParameterList","parameters":[],"src":"1845:0:141"},"scope":88124,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":87524,"nodeType":"FunctionDefinition","src":"2360:412:141","nodes":[],"body":{"id":87523,"nodeType":"Block","src":"2537:235:141","nodes":[],"statements":[{"expression":{"id":87506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":87504,"name":"superchainConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87446,"src":"2547:16:141","typeDescriptions":{"typeIdentifier":"t_contract$_SuperchainConfig_$94870","typeString":"contract SuperchainConfig"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":87505,"name":"_superchainConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87493,"src":"2566:17:141","typeDescriptions":{"typeIdentifier":"t_contract$_SuperchainConfig_$94870","typeString":"contract SuperchainConfig"}},"src":"2547:36:141","typeDescriptions":{"typeIdentifier":"t_contract$_SuperchainConfig_$94870","typeString":"contract SuperchainConfig"}},"id":87507,"nodeType":"ExpressionStatement","src":"2547:36:141"},{"expression":{"id":87510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":87508,"name":"portal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87450,"src":"2593:6:141","typeDescriptions":{"typeIdentifier":"t_contract$_OptimismPortal_$92796","typeString":"contract OptimismPortal"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":87509,"name":"_portal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87496,"src":"2602:7:141","typeDescriptions":{"typeIdentifier":"t_contract$_OptimismPortal_$92796","typeString":"contract OptimismPortal"}},"src":"2593:16:141","typeDescriptions":{"typeIdentifier":"t_contract$_OptimismPortal_$92796","typeString":"contract OptimismPortal"}},"id":87511,"nodeType":"ExpressionStatement","src":"2593:16:141"},{"expression":{"id":87514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":87512,"name":"systemConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87454,"src":"2619:12:141","typeDescriptions":{"typeIdentifier":"t_contract$_SystemConfig_$95931","typeString":"contract SystemConfig"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":87513,"name":"_systemConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87499,"src":"2634:13:141","typeDescriptions":{"typeIdentifier":"t_contract$_SystemConfig_$95931","typeString":"contract SystemConfig"}},"src":"2619:28:141","typeDescriptions":{"typeIdentifier":"t_contract$_SystemConfig_$95931","typeString":"contract SystemConfig"}},"id":87515,"nodeType":"ExpressionStatement","src":"2619:28:141"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":87518,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114341,"src":"2725:10:141","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Predeploys_$114341_$","typeString":"type(library Predeploys)"}},"id":87519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"L2_CROSS_DOMAIN_MESSENGER","nodeType":"MemberAccess","referencedDeclaration":113871,"src":"2725:36:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":87517,"name":"CrossDomainMessenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121789,"src":"2704:20:141","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CrossDomainMessenger_$121789_$","typeString":"type(contract CrossDomainMessenger)"}},"id":87520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2704:58:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_CrossDomainMessenger_$121789","typeString":"contract CrossDomainMessenger"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CrossDomainMessenger_$121789","typeString":"contract CrossDomainMessenger"}],"id":87516,"name":"__CrossDomainMessenger_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121745,"src":"2657:27:141","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_CrossDomainMessenger_$121789_$returns$__$","typeString":"function (contract CrossDomainMessenger)"}},"id":87521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":["_otherMessenger"],"nodeType":"FunctionCall","src":"2657:108:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":87522,"nodeType":"ExpressionStatement","src":"2657:108:141"}]},"documentation":{"id":87490,"nodeType":"StructuredDocumentation","src":"2062:293:141","text":"@notice Initializes the contract.\n @param _superchainConfig Contract of the SuperchainConfig contract on this network.\n @param _portal Contract of the OptimismPortal contract on this network.\n @param _systemConfig Contract of the SystemConfig contract on this network."},"functionSelector":"c0c53b8b","implemented":true,"kind":"function","modifiers":[{"id":87502,"kind":"modifierInvocation","modifierName":{"id":87501,"name":"initializer","nodeType":"IdentifierPath","referencedDeclaration":47645,"src":"2521:11:141"},"nodeType":"ModifierInvocation","src":"2521:11:141"}],"name":"initialize","nameLocation":"2369:10:141","parameters":{"id":87500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87493,"mutability":"mutable","name":"_superchainConfig","nameLocation":"2406:17:141","nodeType":"VariableDeclaration","scope":87524,"src":"2389:34:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_SuperchainConfig_$94870","typeString":"contract SuperchainConfig"},"typeName":{"id":87492,"nodeType":"UserDefinedTypeName","pathNode":{"id":87491,"name":"SuperchainConfig","nodeType":"IdentifierPath","referencedDeclaration":94870,"src":"2389:16:141"},"referencedDeclaration":94870,"src":"2389:16:141","typeDescriptions":{"typeIdentifier":"t_contract$_SuperchainConfig_$94870","typeString":"contract SuperchainConfig"}},"visibility":"internal"},{"constant":false,"id":87496,"mutability":"mutable","name":"_portal","nameLocation":"2448:7:141","nodeType":"VariableDeclaration","scope":87524,"src":"2433:22:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_OptimismPortal_$92796","typeString":"contract OptimismPortal"},"typeName":{"id":87495,"nodeType":"UserDefinedTypeName","pathNode":{"id":87494,"name":"OptimismPortal","nodeType":"IdentifierPath","referencedDeclaration":92796,"src":"2433:14:141"},"referencedDeclaration":92796,"src":"2433:14:141","typeDescriptions":{"typeIdentifier":"t_contract$_OptimismPortal_$92796","typeString":"contract OptimismPortal"}},"visibility":"internal"},{"constant":false,"id":87499,"mutability":"mutable","name":"_systemConfig","nameLocation":"2478:13:141","nodeType":"VariableDeclaration","scope":87524,"src":"2465:26:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_SystemConfig_$95931","typeString":"contract SystemConfig"},"typeName":{"id":87498,"nodeType":"UserDefinedTypeName","pathNode":{"id":87497,"name":"SystemConfig","nodeType":"IdentifierPath","referencedDeclaration":95931,"src":"2465:12:141"},"referencedDeclaration":95931,"src":"2465:12:141","typeDescriptions":{"typeIdentifier":"t_contract$_SystemConfig_$95931","typeString":"contract SystemConfig"}},"visibility":"internal"}],"src":"2379:118:141"},"returnParameters":{"id":87503,"nodeType":"ParameterList","parameters":[],"src":"2537:0:141"},"scope":88124,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":87534,"nodeType":"FunctionDefinition","src":"3041:87:141","nodes":[],"body":{"id":87533,"nodeType":"Block","src":"3098:30:141","nodes":[],"statements":[{"expression":{"id":87531,"name":"portal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87450,"src":"3115:6:141","typeDescriptions":{"typeIdentifier":"t_contract$_OptimismPortal_$92796","typeString":"contract OptimismPortal"}},"functionReturnParameters":87530,"id":87532,"nodeType":"Return","src":"3108:13:141"}]},"documentation":{"id":87525,"nodeType":"StructuredDocumentation","src":"2778:258:141","text":"@notice Getter function for the OptimismPortal contract on this chain.\n         Public getter is legacy and will be removed in the future. Use `portal()` instead.\n @return Contract of the OptimismPortal on this chain.\n @custom:legacy"},"functionSelector":"0ff754ea","implemented":true,"kind":"function","modifiers":[],"name":"PORTAL","nameLocation":"3050:6:141","parameters":{"id":87526,"nodeType":"ParameterList","parameters":[],"src":"3056:2:141"},"returnParameters":{"id":87530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87529,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":87534,"src":"3082:14:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_OptimismPortal_$92796","typeString":"contract OptimismPortal"},"typeName":{"id":87528,"nodeType":"UserDefinedTypeName","pathNode":{"id":87527,"name":"OptimismPortal","nodeType":"IdentifierPath","referencedDeclaration":92796,"src":"3082:14:141"},"referencedDeclaration":92796,"src":"3082:14:141","typeDescriptions":{"typeIdentifier":"t_contract$_OptimismPortal_$92796","typeString":"contract OptimismPortal"}},"visibility":"internal"}],"src":"3081:16:141"},"scope":88124,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":87567,"nodeType":"FunctionDefinition","src":"3175:251:141","nodes":[],"body":{"id":87566,"nodeType":"Block","src":"3282:144:141","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":87551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":87548,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3300:3:141","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":87549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"3300:9:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":87550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3313:1:141","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3300:14:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"44656e79206465706f736974696e6720455448","id":87552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3316:21:141","typeDescriptions":{"typeIdentifier":"t_stringliteral_adb25132a00c328f301fefa9fb7b266dfffd65b40d797162a6bec5effb51aa28","typeString":"literal_string \"Deny depositing ETH\""},"value":"Deny depositing ETH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_adb25132a00c328f301fefa9fb7b266dfffd65b40d797162a6bec5effb51aa28","typeString":"literal_string \"Deny depositing ETH\""}],"id":87547,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3292:7:141","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":87553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3292:46:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":87554,"nodeType":"ExpressionStatement","src":"3292:46:141"},{"expression":{"arguments":[{"id":87558,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87537,"src":"3374:3:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":87559,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87541,"src":"3379:6:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":87560,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87541,"src":"3387:6:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":87561,"name":"_gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87539,"src":"3395:9:141","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"hexValue":"66616c7365","id":87562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3406:5:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":87563,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87543,"src":"3413:5:141","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":87555,"name":"portal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87450,"src":"3348:6:141","typeDescriptions":{"typeIdentifier":"t_contract$_OptimismPortal_$92796","typeString":"contract OptimismPortal"}},"id":87557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"depositTransaction","nodeType":"MemberAccess","referencedDeclaration":92644,"src":"3348:25:141","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint64_$_t_bool_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,uint256,uint64,bool,bytes memory) external"}},"id":87564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3348:71:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":87565,"nodeType":"ExpressionStatement","src":"3348:71:141"}]},"baseFunctions":[121765],"documentation":{"id":87535,"nodeType":"StructuredDocumentation","src":"3134:36:141","text":"@inheritdoc CrossDomainMessenger"},"implemented":true,"kind":"function","modifiers":[],"name":"_sendMessage","nameLocation":"3184:12:141","overrides":{"id":87545,"nodeType":"OverrideSpecifier","overrides":[],"src":"3273:8:141"},"parameters":{"id":87544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87537,"mutability":"mutable","name":"_to","nameLocation":"3205:3:141","nodeType":"VariableDeclaration","scope":87567,"src":"3197:11:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87536,"name":"address","nodeType":"ElementaryTypeName","src":"3197:7:141","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87539,"mutability":"mutable","name":"_gasLimit","nameLocation":"3217:9:141","nodeType":"VariableDeclaration","scope":87567,"src":"3210:16:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":87538,"name":"uint64","nodeType":"ElementaryTypeName","src":"3210:6:141","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":87541,"mutability":"mutable","name":"_value","nameLocation":"3236:6:141","nodeType":"VariableDeclaration","scope":87567,"src":"3228:14:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":87540,"name":"uint256","nodeType":"ElementaryTypeName","src":"3228:7:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":87543,"mutability":"mutable","name":"_data","nameLocation":"3257:5:141","nodeType":"VariableDeclaration","scope":87567,"src":"3244:18:141","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":87542,"name":"bytes","nodeType":"ElementaryTypeName","src":"3244:5:141","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3196:67:141"},"returnParameters":{"id":87546,"nodeType":"ParameterList","parameters":[],"src":"3282:0:141"},"scope":88124,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":87589,"nodeType":"FunctionDefinition","src":"3527:692:141","nodes":[],"body":{"id":87588,"nodeType":"Block","src":"3688:531:141","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":87583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":87580,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87570,"src":"3706:5:141","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":87581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3706:12:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"3234","id":87582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3722:2:141","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},"src":"3706:18:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964206f6e417070726f7665206461746120666f72204c3143726f7373446f6d61696e4d657373656e676572","id":87584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3726:51:141","typeDescriptions":{"typeIdentifier":"t_stringliteral_8247fc35cdb85f66bc01ac335fca11d5bce4058c7ce5ddf3ece87ad7e4f5c31e","typeString":"literal_string \"Invalid onApprove data for L1CrossDomainMessenger\""},"value":"Invalid onApprove data for L1CrossDomainMessenger"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8247fc35cdb85f66bc01ac335fca11d5bce4058c7ce5ddf3ece87ad7e4f5c31e","typeString":"literal_string \"Invalid onApprove data for L1CrossDomainMessenger\""}],"id":87579,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3698:7:141","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":87585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3698:80:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":87586,"nodeType":"ExpressionStatement","src":"3698:80:141"},{"AST":{"nodeType":"YulBlock","src":"3797:416:141","statements":[{"nodeType":"YulAssignment","src":"3981:42:141","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3992:2:141","type":"","value":"96"},{"arguments":[{"name":"_data.offset","nodeType":"YulIdentifier","src":"4009:12:141"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3996:12:141"},"nodeType":"YulFunctionCall","src":"3996:26:141"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"3988:3:141"},"nodeType":"YulFunctionCall","src":"3988:35:141"},"variableNames":[{"name":"_to","nodeType":"YulIdentifier","src":"3981:3:141"}]},{"nodeType":"YulAssignment","src":"4036:61:141","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4056:3:141","type":"","value":"224"},{"arguments":[{"arguments":[{"name":"_data.offset","nodeType":"YulIdentifier","src":"4078:12:141"},{"kind":"number","nodeType":"YulLiteral","src":"4092:2:141","type":"","value":"20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4074:3:141"},"nodeType":"YulFunctionCall","src":"4074:21:141"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4061:12:141"},"nodeType":"YulFunctionCall","src":"4061:35:141"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"4052:3:141"},"nodeType":"YulFunctionCall","src":"4052:45:141"},"variableNames":[{"name":"_minGasLimit","nodeType":"YulIdentifier","src":"4036:12:141"}]},{"nodeType":"YulAssignment","src":"4110:40:141","value":{"arguments":[{"name":"_data.offset","nodeType":"YulIdentifier","src":"4133:12:141"},{"kind":"number","nodeType":"YulLiteral","src":"4147:2:141","type":"","value":"24"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4129:3:141"},"nodeType":"YulFunctionCall","src":"4129:21:141"},"variableNames":[{"name":"_message.offset","nodeType":"YulIdentifier","src":"4110:15:141"}]},{"nodeType":"YulAssignment","src":"4163:40:141","value":{"arguments":[{"name":"_data.length","nodeType":"YulIdentifier","src":"4186:12:141"},{"kind":"number","nodeType":"YulLiteral","src":"4200:2:141","type":"","value":"24"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4182:3:141"},"nodeType":"YulFunctionCall","src":"4182:21:141"},"variableNames":[{"name":"_message.length","nodeType":"YulIdentifier","src":"4163:15:141"}]}]},"evmVersion":"london","externalReferences":[{"declaration":87570,"isOffset":false,"isSlot":false,"src":"4186:12:141","suffix":"length","valueSize":1},{"declaration":87570,"isOffset":true,"isSlot":false,"src":"4009:12:141","suffix":"offset","valueSize":1},{"declaration":87570,"isOffset":true,"isSlot":false,"src":"4078:12:141","suffix":"offset","valueSize":1},{"declaration":87570,"isOffset":true,"isSlot":false,"src":"4133:12:141","suffix":"offset","valueSize":1},{"declaration":87577,"isOffset":false,"isSlot":false,"src":"4163:15:141","suffix":"length","valueSize":1},{"declaration":87577,"isOffset":true,"isSlot":false,"src":"4110:15:141","suffix":"offset","valueSize":1},{"declaration":87575,"isOffset":false,"isSlot":false,"src":"4036:12:141","valueSize":1},{"declaration":87573,"isOffset":false,"isSlot":false,"src":"3981:3:141","valueSize":1}],"id":87587,"nodeType":"InlineAssembly","src":"3788:425:141"}]},"documentation":{"id":87568,"nodeType":"StructuredDocumentation","src":"3432:90:141","text":"@notice unpack onApprove data\n @param _data     Data used in OnApprove contract"},"implemented":true,"kind":"function","modifiers":[],"name":"unpackOnApproveData","nameLocation":"3536:19:141","parameters":{"id":87571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87570,"mutability":"mutable","name":"_data","nameLocation":"3571:5:141","nodeType":"VariableDeclaration","scope":87589,"src":"3556:20:141","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":87569,"name":"bytes","nodeType":"ElementaryTypeName","src":"3556:5:141","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3555:22:141"},"returnParameters":{"id":87578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87573,"mutability":"mutable","name":"_to","nameLocation":"3633:3:141","nodeType":"VariableDeclaration","scope":87589,"src":"3625:11:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87572,"name":"address","nodeType":"ElementaryTypeName","src":"3625:7:141","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87575,"mutability":"mutable","name":"_minGasLimit","nameLocation":"3645:12:141","nodeType":"VariableDeclaration","scope":87589,"src":"3638:19:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":87574,"name":"uint32","nodeType":"ElementaryTypeName","src":"3638:6:141","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":87577,"mutability":"mutable","name":"_message","nameLocation":"3674:8:141","nodeType":"VariableDeclaration","scope":87589,"src":"3659:23:141","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":87576,"name":"bytes","nodeType":"ElementaryTypeName","src":"3659:5:141","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3624:59:141"},"scope":88124,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":87637,"nodeType":"FunctionDefinition","src":"4424:482:141","nodes":[],"body":{"id":87636,"nodeType":"Block","src":"4606:300:141","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":87612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":87605,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4624:3:141","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":87606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4624:10:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":87609,"name":"_nativeToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87706,"src":"4646:12:141","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":87610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4646:14:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":87608,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4638:7:141","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":87607,"name":"address","nodeType":"ElementaryTypeName","src":"4638:7:141","typeDescriptions":{}}},"id":87611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4638:23:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4624:37:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6f6e6c7920616363657074206e617469766520746f6b656e20617070726f76652063616c6c6261636b","id":87613,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4663:43:141","typeDescriptions":{"typeIdentifier":"t_stringliteral_f4b297da633e18be624edab084175711757920feabe27679f12a2f3de3c46fb8","typeString":"literal_string \"only accept native token approve callback\""},"value":"only accept native token approve callback"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f4b297da633e18be624edab084175711757920feabe27679f12a2f3de3c46fb8","typeString":"literal_string \"only accept native token approve callback\""}],"id":87604,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4616:7:141","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":87614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4616:91:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":87615,"nodeType":"ExpressionStatement","src":"4616:91:141"},{"assignments":[87617,87619,87621],"declarations":[{"constant":false,"id":87617,"mutability":"mutable","name":"to","nameLocation":"4726:2:141","nodeType":"VariableDeclaration","scope":87636,"src":"4718:10:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87616,"name":"address","nodeType":"ElementaryTypeName","src":"4718:7:141","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87619,"mutability":"mutable","name":"minGasLimit","nameLocation":"4737:11:141","nodeType":"VariableDeclaration","scope":87636,"src":"4730:18:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":87618,"name":"uint32","nodeType":"ElementaryTypeName","src":"4730:6:141","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":87621,"mutability":"mutable","name":"message","nameLocation":"4765:7:141","nodeType":"VariableDeclaration","scope":87636,"src":"4750:22:141","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":87620,"name":"bytes","nodeType":"ElementaryTypeName","src":"4750:5:141","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":87625,"initialValue":{"arguments":[{"id":87623,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87598,"src":"4796:5:141","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":87622,"name":"unpackOnApproveData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87589,"src":"4776:19:141","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_address_$_t_uint32_$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (address,uint32,bytes calldata)"}},"id":87624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4776:26:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint32_$_t_bytes_calldata_ptr_$","typeString":"tuple(address,uint32,bytes calldata)"}},"nodeType":"VariableDeclarationStatement","src":"4717:85:141"},{"expression":{"arguments":[{"id":87627,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87592,"src":"4836:6:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":87628,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87617,"src":"4844:2:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":87629,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87596,"src":"4848:7:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":87630,"name":"minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87619,"src":"4857:11:141","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":87631,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87621,"src":"4870:7:141","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":87626,"name":"_sendNativeTokenMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87831,"src":"4812:23:141","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (address,address,uint256,uint32,bytes calldata)"}},"id":87632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4812:66:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":87633,"nodeType":"ExpressionStatement","src":"4812:66:141"},{"expression":{"hexValue":"74727565","id":87634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4895:4:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":87603,"id":87635,"nodeType":"Return","src":"4888:11:141"}]},"baseFunctions":[91827],"documentation":{"id":87590,"nodeType":"StructuredDocumentation","src":"4225:194:141","text":"@notice ERC20 onApprove callback\n @param _owner    Account that called approveAndCall\n @param _amount   Approved amount\n @param _data     Data used in OnApprove contract"},"functionSelector":"4273ca16","implemented":true,"kind":"function","modifiers":[],"name":"onApprove","nameLocation":"4433:9:141","overrides":{"id":87600,"nodeType":"OverrideSpecifier","overrides":[],"src":"4570:8:141"},"parameters":{"id":87599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87592,"mutability":"mutable","name":"_owner","nameLocation":"4460:6:141","nodeType":"VariableDeclaration","scope":87637,"src":"4452:14:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87591,"name":"address","nodeType":"ElementaryTypeName","src":"4452:7:141","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87594,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":87637,"src":"4476:7:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87593,"name":"address","nodeType":"ElementaryTypeName","src":"4476:7:141","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87596,"mutability":"mutable","name":"_amount","nameLocation":"4501:7:141","nodeType":"VariableDeclaration","scope":87637,"src":"4493:15:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":87595,"name":"uint256","nodeType":"ElementaryTypeName","src":"4493:7:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":87598,"mutability":"mutable","name":"_data","nameLocation":"4533:5:141","nodeType":"VariableDeclaration","scope":87637,"src":"4518:20:141","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":87597,"name":"bytes","nodeType":"ElementaryTypeName","src":"4518:5:141","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4442:102:141"},"returnParameters":{"id":87603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87602,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":87637,"src":"4596:4:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":87601,"name":"bool","nodeType":"ElementaryTypeName","src":"4596:4:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4595:6:141"},"scope":88124,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":87662,"nodeType":"FunctionDefinition","src":"4953:168:141","nodes":[],"body":{"id":87661,"nodeType":"Block","src":"5020:101:141","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":87659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":87650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":87644,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5037:3:141","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":87645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5037:10:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":87648,"name":"portal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87450,"src":"5059:6:141","typeDescriptions":{"typeIdentifier":"t_contract$_OptimismPortal_$92796","typeString":"contract OptimismPortal"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OptimismPortal_$92796","typeString":"contract OptimismPortal"}],"id":87647,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5051:7:141","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":87646,"name":"address","nodeType":"ElementaryTypeName","src":"5051:7:141","typeDescriptions":{}}},"id":87649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5051:15:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5037:29:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":87658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":87651,"name":"portal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87450,"src":"5070:6:141","typeDescriptions":{"typeIdentifier":"t_contract$_OptimismPortal_$92796","typeString":"contract OptimismPortal"}},"id":87652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"l2Sender","nodeType":"MemberAccess","referencedDeclaration":91895,"src":"5070:15:141","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":87653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5070:17:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":87656,"name":"otherMessenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121317,"src":"5099:14:141","typeDescriptions":{"typeIdentifier":"t_contract$_CrossDomainMessenger_$121789","typeString":"contract CrossDomainMessenger"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CrossDomainMessenger_$121789","typeString":"contract CrossDomainMessenger"}],"id":87655,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5091:7:141","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":87654,"name":"address","nodeType":"ElementaryTypeName","src":"5091:7:141","typeDescriptions":{}}},"id":87657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5091:23:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5070:44:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5037:77:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":87643,"id":87660,"nodeType":"Return","src":"5030:84:141"}]},"baseFunctions":[121771],"documentation":{"id":87638,"nodeType":"StructuredDocumentation","src":"4912:36:141","text":"@inheritdoc CrossDomainMessenger"},"implemented":true,"kind":"function","modifiers":[],"name":"_isOtherMessenger","nameLocation":"4962:17:141","overrides":{"id":87640,"nodeType":"OverrideSpecifier","overrides":[],"src":"4996:8:141"},"parameters":{"id":87639,"nodeType":"ParameterList","parameters":[],"src":"4979:2:141"},"returnParameters":{"id":87643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87642,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":87662,"src":"5014:4:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":87641,"name":"bool","nodeType":"ElementaryTypeName","src":"5014:4:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5013:6:141"},"scope":88124,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":87686,"nodeType":"FunctionDefinition","src":"5168:158:141","nodes":[],"body":{"id":87685,"nodeType":"Block","src":"5248:78:141","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":87683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":87676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":87671,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87665,"src":"5265:7:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":87674,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5284:4:141","typeDescriptions":{"typeIdentifier":"t_contract$_L1CrossDomainMessenger_$88124","typeString":"contract L1CrossDomainMessenger"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_L1CrossDomainMessenger_$88124","typeString":"contract L1CrossDomainMessenger"}],"id":87673,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5276:7:141","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":87672,"name":"address","nodeType":"ElementaryTypeName","src":"5276:7:141","typeDescriptions":{}}},"id":87675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5276:13:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5265:24:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":87682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":87677,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87665,"src":"5293:7:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":87680,"name":"portal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87450,"src":"5312:6:141","typeDescriptions":{"typeIdentifier":"t_contract$_OptimismPortal_$92796","typeString":"contract OptimismPortal"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OptimismPortal_$92796","typeString":"contract OptimismPortal"}],"id":87679,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5304:7:141","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":87678,"name":"address","nodeType":"ElementaryTypeName","src":"5304:7:141","typeDescriptions":{}}},"id":87681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5304:15:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5293:26:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5265:54:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":87670,"id":87684,"nodeType":"Return","src":"5258:61:141"}]},"baseFunctions":[121779],"documentation":{"id":87663,"nodeType":"StructuredDocumentation","src":"5127:36:141","text":"@inheritdoc CrossDomainMessenger"},"implemented":true,"kind":"function","modifiers":[],"name":"_isUnsafeTarget","nameLocation":"5177:15:141","overrides":{"id":87667,"nodeType":"OverrideSpecifier","overrides":[],"src":"5224:8:141"},"parameters":{"id":87666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87665,"mutability":"mutable","name":"_target","nameLocation":"5201:7:141","nodeType":"VariableDeclaration","scope":87686,"src":"5193:15:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87664,"name":"address","nodeType":"ElementaryTypeName","src":"5193:7:141","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5192:17:141"},"returnParameters":{"id":87670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87669,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":87686,"src":"5242:4:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":87668,"name":"bool","nodeType":"ElementaryTypeName","src":"5242:4:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5241:6:141"},"scope":88124,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":87696,"nodeType":"FunctionDefinition","src":"5460:98:141","nodes":[],"body":{"id":87695,"nodeType":"Block","src":"5520:38:141","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":87692,"name":"_nativeToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87706,"src":"5537:12:141","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":87693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5537:14:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":87691,"id":87694,"nodeType":"Return","src":"5530:21:141"}]},"documentation":{"id":87687,"nodeType":"StructuredDocumentation","src":"5332:123:141","text":"@notice Getter function for address of native token on this network\n @return address The address of native token"},"functionSelector":"4d0047ee","implemented":true,"kind":"function","modifiers":[],"name":"nativeTokenAddress","nameLocation":"5469:18:141","parameters":{"id":87688,"nodeType":"ParameterList","parameters":[],"src":"5487:2:141"},"returnParameters":{"id":87691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87690,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":87696,"src":"5511:7:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87689,"name":"address","nodeType":"ElementaryTypeName","src":"5511:7:141","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5510:9:141"},"scope":88124,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":87706,"nodeType":"FunctionDefinition","src":"5564:113:141","nodes":[],"body":{"id":87705,"nodeType":"Block","src":"5620:57:141","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":87701,"name":"systemConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87454,"src":"5637:12:141","typeDescriptions":{"typeIdentifier":"t_contract$_SystemConfig_$95931","typeString":"contract SystemConfig"}},"id":87702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"nativeTokenAddress","nodeType":"MemberAccess","referencedDeclaration":95485,"src":"5637:31:141","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":87703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5637:33:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":87700,"id":87704,"nodeType":"Return","src":"5630:40:141"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_nativeToken","nameLocation":"5573:12:141","parameters":{"id":87697,"nodeType":"ParameterList","parameters":[],"src":"5585:2:141"},"returnParameters":{"id":87700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87699,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":87706,"src":"5611:7:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87698,"name":"address","nodeType":"ElementaryTypeName","src":"5611:7:141","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5610:9:141"},"scope":88124,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":87718,"nodeType":"FunctionDefinition","src":"5724:103:141","nodes":[],"body":{"id":87717,"nodeType":"Block","src":"5778:49:141","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":87713,"name":"superchainConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87446,"src":"5795:16:141","typeDescriptions":{"typeIdentifier":"t_contract$_SuperchainConfig_$94870","typeString":"contract SuperchainConfig"}},"id":87714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"paused","nodeType":"MemberAccess","referencedDeclaration":94784,"src":"5795:23:141","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":87715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5795:25:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":87712,"id":87716,"nodeType":"Return","src":"5788:32:141"}]},"baseFunctions":[121788],"documentation":{"id":87707,"nodeType":"StructuredDocumentation","src":"5683:36:141","text":"@inheritdoc CrossDomainMessenger"},"functionSelector":"5c975abb","implemented":true,"kind":"function","modifiers":[],"name":"paused","nameLocation":"5733:6:141","overrides":{"id":87709,"nodeType":"OverrideSpecifier","overrides":[],"src":"5754:8:141"},"parameters":{"id":87708,"nodeType":"ParameterList","parameters":[],"src":"5739:2:141"},"returnParameters":{"id":87712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87711,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":87718,"src":"5772:4:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":87710,"name":"bool","nodeType":"ElementaryTypeName","src":"5772:4:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5771:6:141"},"scope":88124,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":87740,"nodeType":"FunctionDefinition","src":"6490:614:141","nodes":[],"body":{"id":87739,"nodeType":"Block","src":"6661:443:141","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":87731,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7044:3:141","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":87732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7044:10:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":87733,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87721,"src":"7056:7:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":87734,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87723,"src":"7065:7:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":87735,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87727,"src":"7074:12:141","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":87736,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87725,"src":"7088:8:141","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":87730,"name":"_sendNativeTokenMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87831,"src":"7020:23:141","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (address,address,uint256,uint32,bytes calldata)"}},"id":87737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7020:77:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":87738,"nodeType":"ExpressionStatement","src":"7020:77:141"}]},"documentation":{"id":87719,"nodeType":"StructuredDocumentation","src":"5833:652:141","text":"@notice Sends a deposit native token message to some target address on the other chain. Note that if the call\n         always reverts, then the message will be unrelayable, and any ETH sent will be\n         permanently locked. The same will occur if the target on the other chain is\n         considered unsafe (see the _isUnsafeTarget() function).\n @param _target      Target contract or wallet address.\n @param _amount      Amount of deposit native token.\n @param _message     Message to trigger the target address with.\n @param _minGasLimit Minimum gas limit that the message can be executed with."},"functionSelector":"e0e593c5","implemented":true,"kind":"function","modifiers":[],"name":"sendNativeTokenMessage","nameLocation":"6499:22:141","parameters":{"id":87728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87721,"mutability":"mutable","name":"_target","nameLocation":"6539:7:141","nodeType":"VariableDeclaration","scope":87740,"src":"6531:15:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87720,"name":"address","nodeType":"ElementaryTypeName","src":"6531:7:141","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87723,"mutability":"mutable","name":"_amount","nameLocation":"6564:7:141","nodeType":"VariableDeclaration","scope":87740,"src":"6556:15:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":87722,"name":"uint256","nodeType":"ElementaryTypeName","src":"6556:7:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":87725,"mutability":"mutable","name":"_message","nameLocation":"6596:8:141","nodeType":"VariableDeclaration","scope":87740,"src":"6581:23:141","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":87724,"name":"bytes","nodeType":"ElementaryTypeName","src":"6581:5:141","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":87727,"mutability":"mutable","name":"_minGasLimit","nameLocation":"6621:12:141","nodeType":"VariableDeclaration","scope":87740,"src":"6614:19:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":87726,"name":"uint32","nodeType":"ElementaryTypeName","src":"6614:6:141","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"6521:118:141"},"returnParameters":{"id":87729,"nodeType":"ParameterList","parameters":[],"src":"6661:0:141"},"scope":88124,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":87831,"nodeType":"FunctionDefinition","src":"7830:1337:141","nodes":[],"body":{"id":87830,"nodeType":"Block","src":"8027:1140:141","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":87756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":87754,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87747,"src":"8073:7:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":87755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8083:1:141","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8073:11:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":87786,"nodeType":"IfStatement","src":"8069:252:141","trueBody":{"id":87785,"nodeType":"Block","src":"8086:235:141","statements":[{"assignments":[87758],"declarations":[{"constant":false,"id":87758,"mutability":"mutable","name":"_nativeTokenAddress","nameLocation":"8108:19:141","nodeType":"VariableDeclaration","scope":87785,"src":"8100:27:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87757,"name":"address","nodeType":"ElementaryTypeName","src":"8100:7:141","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":87761,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":87759,"name":"_nativeToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87706,"src":"8130:12:141","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":87760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8130:14:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8100:44:141"},{"expression":{"arguments":[{"id":87766,"name":"_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87743,"src":"8203:7:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":87769,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8220:4:141","typeDescriptions":{"typeIdentifier":"t_contract$_L1CrossDomainMessenger_$88124","typeString":"contract L1CrossDomainMessenger"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_L1CrossDomainMessenger_$88124","typeString":"contract L1CrossDomainMessenger"}],"id":87768,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8212:7:141","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":87767,"name":"address","nodeType":"ElementaryTypeName","src":"8212:7:141","typeDescriptions":{}}},"id":87770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8212:13:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":87771,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87747,"src":"8227:7:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":87763,"name":"_nativeTokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87758,"src":"8165:19:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":87762,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50993,"src":"8158:6:141","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$50993_$","typeString":"type(contract IERC20)"}},"id":87764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8158:27:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$50993","typeString":"contract IERC20"}},"id":87765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":51965,"src":"8158:44:141","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$50993_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$50993_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":87772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8158:77:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":87773,"nodeType":"ExpressionStatement","src":"8158:77:141"},{"expression":{"arguments":[{"arguments":[{"id":87780,"name":"portal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87450,"src":"8293:6:141","typeDescriptions":{"typeIdentifier":"t_contract$_OptimismPortal_$92796","typeString":"contract OptimismPortal"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OptimismPortal_$92796","typeString":"contract OptimismPortal"}],"id":87779,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8285:7:141","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":87778,"name":"address","nodeType":"ElementaryTypeName","src":"8285:7:141","typeDescriptions":{}}},"id":87781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8285:15:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":87782,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87747,"src":"8302:7:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":87775,"name":"_nativeTokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87758,"src":"8256:19:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":87774,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50993,"src":"8249:6:141","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$50993_$","typeString":"type(contract IERC20)"}},"id":87776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8249:27:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$50993","typeString":"contract IERC20"}},"id":87777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":50980,"src":"8249:35:141","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":87783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8249:61:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":87784,"nodeType":"ExpressionStatement","src":"8249:61:141"}]}},{"expression":{"arguments":[{"arguments":[{"id":87790,"name":"otherMessenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121317,"src":"8714:14:141","typeDescriptions":{"typeIdentifier":"t_contract$_CrossDomainMessenger_$121789","typeString":"contract CrossDomainMessenger"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CrossDomainMessenger_$121789","typeString":"contract CrossDomainMessenger"}],"id":87789,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8706:7:141","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":87788,"name":"address","nodeType":"ElementaryTypeName","src":"8706:7:141","typeDescriptions":{}}},"id":87791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8706:23:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":87793,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87751,"src":"8751:8:141","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":87794,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87749,"src":"8761:12:141","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":87792,"name":"baseGas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121718,"src":"8743:7:141","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint32_$returns$_t_uint64_$","typeString":"function (bytes calldata,uint32) pure returns (uint64)"}},"id":87795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8743:31:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":87796,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87747,"src":"8788:7:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"expression":{"id":87799,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8849:4:141","typeDescriptions":{"typeIdentifier":"t_contract$_L1CrossDomainMessenger_$88124","typeString":"contract L1CrossDomainMessenger"}},"id":87800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"relayMessage","nodeType":"MemberAccess","referencedDeclaration":88123,"src":"8849:17:141","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (uint256,address,address,uint256,uint256,bytes memory) payable external"}},"id":87801,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"8849:26:141","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"arguments":[],"expression":{"argumentTypes":[],"id":87802,"name":"messageNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121681,"src":"8877:12:141","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":87803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8877:14:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":87804,"name":"_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87743,"src":"8893:7:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":87805,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87745,"src":"8902:7:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":87806,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87747,"src":"8911:7:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":87807,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87749,"src":"8920:12:141","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":87808,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87751,"src":"8934:8:141","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":87797,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8809:3:141","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":87798,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"8809:22:141","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":87809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8809:147:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":87787,"name":"_sendMessage","nodeType":"Identifier","overloadedDeclarations":[87567],"referencedDeclaration":87567,"src":"8680:12:141","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint64_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint64,uint256,bytes memory)"}},"id":87810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8680:286:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":87811,"nodeType":"ExpressionStatement","src":"8680:286:141"},{"eventCall":{"arguments":[{"id":87813,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87745,"src":"8994:7:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":87814,"name":"_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87743,"src":"9003:7:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":87815,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87751,"src":"9012:8:141","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"arguments":[],"expression":{"argumentTypes":[],"id":87816,"name":"messageNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121681,"src":"9022:12:141","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":87817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9022:14:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":87818,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87749,"src":"9038:12:141","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":87812,"name":"SentMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121335,"src":"8982:11:141","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,bytes memory,uint256,uint256)"}},"id":87819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8982:69:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":87820,"nodeType":"EmitStatement","src":"8977:74:141"},{"eventCall":{"arguments":[{"id":87822,"name":"_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87743,"src":"9088:7:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":87823,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87747,"src":"9097:7:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":87821,"name":"SentMessageExtension1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121342,"src":"9066:21:141","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":87824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9066:39:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":87825,"nodeType":"EmitStatement","src":"9061:44:141"},{"id":87829,"nodeType":"UncheckedBlock","src":"9116:45:141","statements":[{"expression":{"id":87827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"9140:10:141","subExpression":{"id":87826,"name":"msgNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121308,"src":"9142:8:141","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"id":87828,"nodeType":"ExpressionStatement","src":"9140:10:141"}]}]},"documentation":{"id":87741,"nodeType":"StructuredDocumentation","src":"7110:715:141","text":"@notice Sends a deposit native token message internally to some target address on the other chain. Note that if\n the call\n         always reverts, then the message will be unrelayable, and any ETH sent will be\n         permanently locked. The same will occur if the target on the other chain is\n         considered unsafe (see the _isUnsafeTarget() function).\n @param _sender      Sender address.\n @param _target      Target contract or wallet address.\n @param _amount      Amount of deposit native token.\n @param _message     Message to trigger the target address with.\n @param _minGasLimit Minimum gas limit that the message can be executed with."},"implemented":true,"kind":"function","modifiers":[],"name":"_sendNativeTokenMessage","nameLocation":"7839:23:141","parameters":{"id":87752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87743,"mutability":"mutable","name":"_sender","nameLocation":"7880:7:141","nodeType":"VariableDeclaration","scope":87831,"src":"7872:15:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87742,"name":"address","nodeType":"ElementaryTypeName","src":"7872:7:141","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87745,"mutability":"mutable","name":"_target","nameLocation":"7905:7:141","nodeType":"VariableDeclaration","scope":87831,"src":"7897:15:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87744,"name":"address","nodeType":"ElementaryTypeName","src":"7897:7:141","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87747,"mutability":"mutable","name":"_amount","nameLocation":"7930:7:141","nodeType":"VariableDeclaration","scope":87831,"src":"7922:15:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":87746,"name":"uint256","nodeType":"ElementaryTypeName","src":"7922:7:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":87749,"mutability":"mutable","name":"_minGasLimit","nameLocation":"7954:12:141","nodeType":"VariableDeclaration","scope":87831,"src":"7947:19:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":87748,"name":"uint32","nodeType":"ElementaryTypeName","src":"7947:6:141","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":87751,"mutability":"mutable","name":"_message","nameLocation":"7991:8:141","nodeType":"VariableDeclaration","scope":87831,"src":"7976:23:141","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":87750,"name":"bytes","nodeType":"ElementaryTypeName","src":"7976:5:141","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7862:143:141"},"returnParameters":{"id":87753,"nodeType":"ParameterList","parameters":[],"src":"8027:0:141"},"scope":88124,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":88123,"nodeType":"FunctionDefinition","src":"9864:5570:141","nodes":[],"body":{"id":88122,"nodeType":"Block","src":"10107:5327:141","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":87852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":87849,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[87718],"referencedDeclaration":87718,"src":"10125:6:141","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":87850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10125:8:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":87851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10137:5:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"10125:17:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c312043726f7373446f6d61696e4d657373656e6765723a20706175736564","id":87853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10144:33:141","typeDescriptions":{"typeIdentifier":"t_stringliteral_3bff1e53f45685b956ca3346cdf6eb000af93dfd50c9a214e5268bc168e82384","typeString":"literal_string \"L1 CrossDomainMessenger: paused\""},"value":"L1 CrossDomainMessenger: paused"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3bff1e53f45685b956ca3346cdf6eb000af93dfd50c9a214e5268bc168e82384","typeString":"literal_string \"L1 CrossDomainMessenger: paused\""}],"id":87848,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10117:7:141","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":87854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10117:61:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":87855,"nodeType":"ExpressionStatement","src":"10117:61:141"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":87860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":87857,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10196:3:141","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":87858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"10196:9:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":87859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10209:1:141","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10196:14:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43726f7373446f6d61696e4d657373656e6765723a2076616c7565206d757374206265207a65726f","id":87861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10212:42:141","typeDescriptions":{"typeIdentifier":"t_stringliteral_a91fe74ebf15473b513e9d3bee1535fa356cb7b3225420e5bb94f49a254b9c1e","typeString":"literal_string \"CrossDomainMessenger: value must be zero\""},"value":"CrossDomainMessenger: value must be zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a91fe74ebf15473b513e9d3bee1535fa356cb7b3225420e5bb94f49a254b9c1e","typeString":"literal_string \"CrossDomainMessenger: value must be zero\""}],"id":87856,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10188:7:141","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":87862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10188:67:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":87863,"nodeType":"ExpressionStatement","src":"10188:67:141"},{"assignments":[null,87865],"declarations":[null,{"constant":false,"id":87865,"mutability":"mutable","name":"_nonceVersion","nameLocation":"10276:13:141","nodeType":"VariableDeclaration","scope":88122,"src":"10269:20:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":87864,"name":"uint16","nodeType":"ElementaryTypeName","src":"10269:6:141","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"id":87870,"initialValue":{"arguments":[{"id":87868,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87834,"src":"10323:6:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":87866,"name":"Encoding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113256,"src":"10293:8:141","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Encoding_$113256_$","typeString":"type(library Encoding)"}},"id":87867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"decodeVersionedNonce","nodeType":"MemberAccess","referencedDeclaration":113122,"src":"10293:29:141","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint240_$_t_uint16_$","typeString":"function (uint256) pure returns (uint240,uint16)"}},"id":87869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10293:37:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint240_$_t_uint16_$","typeString":"tuple(uint240,uint16)"}},"nodeType":"VariableDeclarationStatement","src":"10266:64:141"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":87874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":87872,"name":"_nonceVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87865,"src":"10348:13:141","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"32","id":87873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10364:1:141","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10348:17:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43726f7373446f6d61696e4d657373656e6765723a206f6e6c792076657273696f6e2030206f722031206d657373616765732061726520737570706f7274656420617420746869732074696d65","id":87875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10367:79:141","typeDescriptions":{"typeIdentifier":"t_stringliteral_613c3f25ff5f199e4ef46f528b3fdb1db106536665e79fc5664217d5ace5b032","typeString":"literal_string \"CrossDomainMessenger: only version 0 or 1 messages are supported at this time\""},"value":"CrossDomainMessenger: only version 0 or 1 messages are supported at this time"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_613c3f25ff5f199e4ef46f528b3fdb1db106536665e79fc5664217d5ace5b032","typeString":"literal_string \"CrossDomainMessenger: only version 0 or 1 messages are supported at this time\""}],"id":87871,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10340:7:141","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":87876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10340:107:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":87877,"nodeType":"ExpressionStatement","src":"10340:107:141"},{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":87880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":87878,"name":"_nonceVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87865,"src":"10649:13:141","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":87879,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10666:1:141","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10649:18:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":87901,"nodeType":"IfStatement","src":"10645:253:141","trueBody":{"id":87900,"nodeType":"Block","src":"10669:229:141","statements":[{"assignments":[87882],"declarations":[{"constant":false,"id":87882,"mutability":"mutable","name":"oldHash","nameLocation":"10691:7:141","nodeType":"VariableDeclaration","scope":87900,"src":"10683:15:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87881,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10683:7:141","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":87890,"initialValue":{"arguments":[{"id":87885,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87838,"src":"10734:7:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":87886,"name":"_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87836,"src":"10743:7:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":87887,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87844,"src":"10752:8:141","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":87888,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87834,"src":"10762:6:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":87883,"name":"Hashing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113767,"src":"10701:7:141","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Hashing_$113767_$","typeString":"type(library Hashing)"}},"id":87884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"hashCrossDomainMessageV0","nodeType":"MemberAccess","referencedDeclaration":113683,"src":"10701:32:141","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (address,address,bytes memory,uint256) pure returns (bytes32)"}},"id":87889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10701:68:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"10683:86:141"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":87896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":87892,"name":"successfulMessages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121302,"src":"10791:18:141","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"}},"id":87894,"indexExpression":{"id":87893,"name":"oldHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87882,"src":"10810:7:141","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10791:27:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":87895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10822:5:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"10791:36:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43726f7373446f6d61696e4d657373656e6765723a206c6567616379207769746864726177616c20616c72656164792072656c61796564","id":87897,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10829:57:141","typeDescriptions":{"typeIdentifier":"t_stringliteral_6165e2ee174e7d1b46e40c12e0e6c5db7f29bb3c3a0e89cfb28416bcac9452e1","typeString":"literal_string \"CrossDomainMessenger: legacy withdrawal already relayed\""},"value":"CrossDomainMessenger: legacy withdrawal already relayed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6165e2ee174e7d1b46e40c12e0e6c5db7f29bb3c3a0e89cfb28416bcac9452e1","typeString":"literal_string \"CrossDomainMessenger: legacy withdrawal already relayed\""}],"id":87891,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10783:7:141","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":87898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10783:104:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":87899,"nodeType":"ExpressionStatement","src":"10783:104:141"}]}},{"assignments":[87903],"declarations":[{"constant":false,"id":87903,"mutability":"mutable","name":"versionedHash","nameLocation":"11076:13:141","nodeType":"VariableDeclaration","scope":88122,"src":"11068:21:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87902,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11068:7:141","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":87913,"initialValue":{"arguments":[{"id":87906,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87834,"src":"11137:6:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":87907,"name":"_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87836,"src":"11145:7:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":87908,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87838,"src":"11154:7:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":87909,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87840,"src":"11163:6:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":87910,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87842,"src":"11171:12:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":87911,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87844,"src":"11185:8:141","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":87904,"name":"Hashing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113767,"src":"11104:7:141","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Hashing_$113767_$","typeString":"type(library Hashing)"}},"id":87905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"hashCrossDomainMessageV1","nodeType":"MemberAccess","referencedDeclaration":113714,"src":"11104:32:141","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (uint256,address,address,uint256,uint256,bytes memory) pure returns (bytes32)"}},"id":87912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11104:90:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"11068:126:141"},{"assignments":[87915],"declarations":[{"constant":false,"id":87915,"mutability":"mutable","name":"_nativeTokenAddress","nameLocation":"11213:19:141","nodeType":"VariableDeclaration","scope":88122,"src":"11205:27:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87914,"name":"address","nodeType":"ElementaryTypeName","src":"11205:7:141","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":87918,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":87916,"name":"_nativeToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87706,"src":"11235:12:141","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":87917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11235:14:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"11205:44:141"},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":87919,"name":"_isOtherMessenger","nodeType":"Identifier","overloadedDeclarations":[87662],"referencedDeclaration":87662,"src":"11263:17:141","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":87920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11263:19:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":87956,"nodeType":"Block","src":"11633:115:141","statements":[{"expression":{"arguments":[{"baseExpression":{"id":87950,"name":"failedMessages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121313,"src":"11655:14:141","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"}},"id":87952,"indexExpression":{"id":87951,"name":"versionedHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87903,"src":"11670:13:141","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11655:29:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43726f7373446f6d61696e4d657373656e6765723a206d6573736167652063616e6e6f74206265207265706c61796564","id":87953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11686:50:141","typeDescriptions":{"typeIdentifier":"t_stringliteral_bb745f097737872dff3bf4ce31c0d843f5adae9f5f676df9824da91fd83c421d","typeString":"literal_string \"CrossDomainMessenger: message cannot be replayed\""},"value":"CrossDomainMessenger: message cannot be replayed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bb745f097737872dff3bf4ce31c0d843f5adae9f5f676df9824da91fd83c421d","typeString":"literal_string \"CrossDomainMessenger: message cannot be replayed\""}],"id":87949,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11647:7:141","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":87954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11647:90:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":87955,"nodeType":"ExpressionStatement","src":"11647:90:141"}]},"id":87957,"nodeType":"IfStatement","src":"11259:489:141","trueBody":{"id":87948,"nodeType":"Block","src":"11284:343:141","statements":[{"expression":{"arguments":[{"id":87925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"11439:30:141","subExpression":{"baseExpression":{"id":87922,"name":"failedMessages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121313,"src":"11440:14:141","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"}},"id":87924,"indexExpression":{"id":87923,"name":"versionedHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87903,"src":"11455:13:141","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11440:29:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":87921,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"11432:6:141","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":87926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11432:38:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":87927,"nodeType":"ExpressionStatement","src":"11432:38:141"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":87930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":87928,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87840,"src":"11488:6:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":87929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11497:1:141","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11488:10:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":87947,"nodeType":"IfStatement","src":"11484:133:141","trueBody":{"id":87946,"nodeType":"Block","src":"11500:117:141","statements":[{"expression":{"arguments":[{"arguments":[{"id":87937,"name":"portal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87450,"src":"11571:6:141","typeDescriptions":{"typeIdentifier":"t_contract$_OptimismPortal_$92796","typeString":"contract OptimismPortal"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OptimismPortal_$92796","typeString":"contract OptimismPortal"}],"id":87936,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11563:7:141","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":87935,"name":"address","nodeType":"ElementaryTypeName","src":"11563:7:141","typeDescriptions":{}}},"id":87938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11563:15:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":87941,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"11588:4:141","typeDescriptions":{"typeIdentifier":"t_contract$_L1CrossDomainMessenger_$88124","typeString":"contract L1CrossDomainMessenger"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_L1CrossDomainMessenger_$88124","typeString":"contract L1CrossDomainMessenger"}],"id":87940,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11580:7:141","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":87939,"name":"address","nodeType":"ElementaryTypeName","src":"11580:7:141","typeDescriptions":{}}},"id":87942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11580:13:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":87943,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87840,"src":"11595:6:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":87932,"name":"_nativeTokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87915,"src":"11525:19:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":87931,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50993,"src":"11518:6:141","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$50993_$","typeString":"type(contract IERC20)"}},"id":87933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11518:27:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$50993","typeString":"contract IERC20"}},"id":87934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":51965,"src":"11518:44:141","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$50993_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$50993_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":87944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11518:84:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":87945,"nodeType":"ExpressionStatement","src":"11518:84:141"}]}}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":87967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":87963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":87960,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87838,"src":"11795:7:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":87959,"name":"_isUnsafeTarget","nodeType":"Identifier","overloadedDeclarations":[87686],"referencedDeclaration":87686,"src":"11779:15:141","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":87961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11779:24:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":87962,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11807:5:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"11779:33:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":87966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":87964,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87838,"src":"11816:7:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":87965,"name":"_nativeTokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87915,"src":"11827:19:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11816:30:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11779:67:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43726f7373446f6d61696e4d657373656e6765723a2063616e6e6f742073656e64206d65737361676520746f20626c6f636b65642073797374656d2061646472657373206f72206e6174697665546f6b656e41646472657373","id":87968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11860:91:141","typeDescriptions":{"typeIdentifier":"t_stringliteral_afb01a7bc7af56e053ce92a96722c16eefbc370eaa05c98de62dd327c99b5699","typeString":"literal_string \"CrossDomainMessenger: cannot send message to blocked system address or nativeTokenAddress\""},"value":"CrossDomainMessenger: cannot send message to blocked system address or nativeTokenAddress"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_afb01a7bc7af56e053ce92a96722c16eefbc370eaa05c98de62dd327c99b5699","typeString":"literal_string \"CrossDomainMessenger: cannot send message to blocked system address or nativeTokenAddress\""}],"id":87958,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11758:7:141","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":87969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11758:203:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":87970,"nodeType":"ExpressionStatement","src":"11758:203:141"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":87976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":87972,"name":"successfulMessages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121302,"src":"11980:18:141","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"}},"id":87974,"indexExpression":{"id":87973,"name":"versionedHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87903,"src":"11999:13:141","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11980:33:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":87975,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12017:5:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"11980:42:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43726f7373446f6d61696e4d657373656e6765723a206d6573736167652068617320616c7265616479206265656e2072656c61796564","id":87977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12024:56:141","typeDescriptions":{"typeIdentifier":"t_stringliteral_b63bfd5e0ee046bfdc0487044ba9676f2ee5e11cc19a24dacb9c46682e5c7150","typeString":"literal_string \"CrossDomainMessenger: message has already been relayed\""},"value":"CrossDomainMessenger: message has already been relayed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b63bfd5e0ee046bfdc0487044ba9676f2ee5e11cc19a24dacb9c46682e5c7150","typeString":"literal_string \"CrossDomainMessenger: message has already been relayed\""}],"id":87971,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11972:7:141","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":87978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11972:109:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":87979,"nodeType":"ExpressionStatement","src":"11972:109:141"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":87992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":87987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"12793:97:141","subExpression":{"arguments":[{"id":87982,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87842,"src":"12813:12:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":87985,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":87983,"name":"RELAY_RESERVED_GAS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121289,"src":"12827:18:141","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":87984,"name":"RELAY_GAS_CHECK_BUFFER_INCLUDING_APPROVAL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121297,"src":"12848:41:141","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"12827:62:141","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"expression":{"id":87980,"name":"SafeCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114740,"src":"12794:8:141","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCall_$114740_$","typeString":"type(library SafeCall)"}},"id":87981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"hasMinGas","nodeType":"MemberAccess","referencedDeclaration":114711,"src":"12794:18:141","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) view returns (bool)"}},"id":87986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12794:96:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":87991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":87988,"name":"xDomainMsgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121305,"src":"12910:16:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":87989,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":112830,"src":"12930:9:141","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Constants_$112830_$","typeString":"type(library Constants)"}},"id":87990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"DEFAULT_L2_SENDER","nodeType":"MemberAccess","referencedDeclaration":112780,"src":"12930:27:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12910:47:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12793:164:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":88016,"nodeType":"IfStatement","src":"12776:937:141","trueBody":{"id":88015,"nodeType":"Block","src":"12968:745:141","statements":[{"expression":{"id":87997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":87993,"name":"failedMessages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121313,"src":"12982:14:141","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"}},"id":87995,"indexExpression":{"id":87994,"name":"versionedHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87903,"src":"12997:13:141","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12982:29:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":87996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13014:4:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"12982:36:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":87998,"nodeType":"ExpressionStatement","src":"12982:36:141"},{"eventCall":{"arguments":[{"id":88000,"name":"versionedHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87903,"src":"13058:13:141","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":87999,"name":"FailedRelayedMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121352,"src":"13037:20:141","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":88001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13037:35:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":88002,"nodeType":"EmitStatement","src":"13032:40:141"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":88007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":88003,"name":"tx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-26,"src":"13552:2:141","typeDescriptions":{"typeIdentifier":"t_magic_transaction","typeString":"tx"}},"id":88004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"origin","nodeType":"MemberAccess","src":"13552:9:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":88005,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":112830,"src":"13565:9:141","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Constants_$112830_$","typeString":"type(library Constants)"}},"id":88006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ESTIMATION_ADDRESS","nodeType":"MemberAccess","referencedDeclaration":112776,"src":"13565:28:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13552:41:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":88013,"nodeType":"IfStatement","src":"13548:135:141","trueBody":{"id":88012,"nodeType":"Block","src":"13595:88:141","statements":[{"expression":{"arguments":[{"hexValue":"43726f7373446f6d61696e4d657373656e6765723a206661696c656420746f2072656c6179206d657373616765","id":88009,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13620:47:141","typeDescriptions":{"typeIdentifier":"t_stringliteral_c31d7113cd2cbba5d595fec2c0ea3cff3ab3bbe5f2eb02ef2bc82397a0578288","typeString":"literal_string \"CrossDomainMessenger: failed to relay message\""},"value":"CrossDomainMessenger: failed to relay message"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c31d7113cd2cbba5d595fec2c0ea3cff3ab3bbe5f2eb02ef2bc82397a0578288","typeString":"literal_string \"CrossDomainMessenger: failed to relay message\""}],"id":88008,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"13613:6:141","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":88010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13613:55:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":88011,"nodeType":"ExpressionStatement","src":"13613:55:141"}]}},{"functionReturnParameters":87847,"id":88014,"nodeType":"Return","src":"13696:7:141"}]}},{"expression":{"id":88019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":88017,"name":"xDomainMsgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121305,"src":"13723:16:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":88018,"name":"_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87836,"src":"13742:7:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13723:26:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":88020,"nodeType":"ExpressionStatement","src":"13723:26:141"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":88030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":88023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":88021,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87840,"src":"13852:6:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":88022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13862:1:141","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13852:11:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":88029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":88024,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87838,"src":"13867:7:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":88027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13886:1:141","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":88026,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13878:7:141","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":88025,"name":"address","nodeType":"ElementaryTypeName","src":"13878:7:141","typeDescriptions":{}}},"id":88028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13878:10:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13867:21:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13852:36:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":88040,"nodeType":"IfStatement","src":"13848:119:141","trueBody":{"id":88039,"nodeType":"Block","src":"13890:77:141","statements":[{"expression":{"arguments":[{"id":88035,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87838,"src":"13940:7:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":88036,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87840,"src":"13949:6:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":88032,"name":"_nativeTokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87915,"src":"13911:19:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":88031,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50993,"src":"13904:6:141","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$50993_$","typeString":"type(contract IERC20)"}},"id":88033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13904:27:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$50993","typeString":"contract IERC20"}},"id":88034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":50980,"src":"13904:35:141","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":88037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13904:52:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":88038,"nodeType":"ExpressionStatement","src":"13904:52:141"}]}},{"assignments":[88042],"declarations":[{"constant":false,"id":88042,"mutability":"mutable","name":"success","nameLocation":"14055:7:141","nodeType":"VariableDeclaration","scope":88122,"src":"14050:12:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":88041,"name":"bool","nodeType":"ElementaryTypeName","src":"14050:4:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":88053,"initialValue":{"arguments":[{"id":88045,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87838,"src":"14079:7:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":88049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":88046,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"14088:7:141","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":88047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14088:9:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":88048,"name":"RELAY_RESERVED_GAS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121289,"src":"14100:18:141","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"14088:30:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":88050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14120:1:141","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":88051,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87844,"src":"14123:8:141","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":88043,"name":"SafeCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114740,"src":"14065:8:141","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCall_$114740_$","typeString":"type(library SafeCall)"}},"id":88044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","referencedDeclaration":114694,"src":"14065:13:141","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,uint256,uint256,bytes memory) returns (bool)"}},"id":88052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14065:67:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"14050:82:141"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":88063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":88056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":88054,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87840,"src":"14146:6:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":88055,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14156:1:141","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14146:11:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":88062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":88057,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87838,"src":"14161:7:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":88060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14180:1:141","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":88059,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14172:7:141","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":88058,"name":"address","nodeType":"ElementaryTypeName","src":"14172:7:141","typeDescriptions":{}}},"id":88061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14172:10:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"14161:21:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14146:36:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":88073,"nodeType":"IfStatement","src":"14142:114:141","trueBody":{"id":88072,"nodeType":"Block","src":"14184:72:141","statements":[{"expression":{"arguments":[{"id":88068,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87838,"src":"14234:7:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":88069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14243:1:141","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"arguments":[{"id":88065,"name":"_nativeTokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87915,"src":"14205:19:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":88064,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50993,"src":"14198:6:141","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$50993_$","typeString":"type(contract IERC20)"}},"id":88066,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14198:27:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$50993","typeString":"contract IERC20"}},"id":88067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":50980,"src":"14198:35:141","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":88070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14198:47:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":88071,"nodeType":"ExpressionStatement","src":"14198:47:141"}]}},{"expression":{"id":88077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":88074,"name":"xDomainMsgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121305,"src":"14265:16:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":88075,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":112830,"src":"14284:9:141","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Constants_$112830_$","typeString":"type(library Constants)"}},"id":88076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"DEFAULT_L2_SENDER","nodeType":"MemberAccess","referencedDeclaration":112780,"src":"14284:27:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"14265:46:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":88078,"nodeType":"ExpressionStatement","src":"14265:46:141"},{"condition":{"id":88079,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88042,"src":"14326:7:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":88120,"nodeType":"Block","src":"14703:725:141","statements":[{"expression":{"id":88103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":88099,"name":"failedMessages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121313,"src":"14717:14:141","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"}},"id":88101,"indexExpression":{"id":88100,"name":"versionedHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87903,"src":"14732:13:141","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14717:29:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":88102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14749:4:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"14717:36:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":88104,"nodeType":"ExpressionStatement","src":"14717:36:141"},{"eventCall":{"arguments":[{"id":88106,"name":"versionedHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87903,"src":"14793:13:141","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":88105,"name":"FailedRelayedMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121352,"src":"14772:20:141","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":88107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14772:35:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":88108,"nodeType":"EmitStatement","src":"14767:40:141"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":88113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":88109,"name":"tx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-26,"src":"15287:2:141","typeDescriptions":{"typeIdentifier":"t_magic_transaction","typeString":"tx"}},"id":88110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"origin","nodeType":"MemberAccess","src":"15287:9:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":88111,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":112830,"src":"15300:9:141","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Constants_$112830_$","typeString":"type(library Constants)"}},"id":88112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ESTIMATION_ADDRESS","nodeType":"MemberAccess","referencedDeclaration":112776,"src":"15300:28:141","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15287:41:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":88119,"nodeType":"IfStatement","src":"15283:135:141","trueBody":{"id":88118,"nodeType":"Block","src":"15330:88:141","statements":[{"expression":{"arguments":[{"hexValue":"43726f7373446f6d61696e4d657373656e6765723a206661696c656420746f2072656c6179206d657373616765","id":88115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15355:47:141","typeDescriptions":{"typeIdentifier":"t_stringliteral_c31d7113cd2cbba5d595fec2c0ea3cff3ab3bbe5f2eb02ef2bc82397a0578288","typeString":"literal_string \"CrossDomainMessenger: failed to relay message\""},"value":"CrossDomainMessenger: failed to relay message"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c31d7113cd2cbba5d595fec2c0ea3cff3ab3bbe5f2eb02ef2bc82397a0578288","typeString":"literal_string \"CrossDomainMessenger: failed to relay message\""}],"id":88114,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"15348:6:141","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":88116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15348:55:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":88117,"nodeType":"ExpressionStatement","src":"15348:55:141"}]}}]},"id":88121,"nodeType":"IfStatement","src":"14322:1106:141","trueBody":{"id":88098,"nodeType":"Block","src":"14335:362:141","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":88085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":88081,"name":"successfulMessages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121302,"src":"14541:18:141","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"}},"id":88083,"indexExpression":{"id":88082,"name":"versionedHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87903,"src":"14560:13:141","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14541:33:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":88084,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14578:5:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"14541:42:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":88080,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"14534:6:141","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":88086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14534:50:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":88087,"nodeType":"ExpressionStatement","src":"14534:50:141"},{"expression":{"id":88092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":88088,"name":"successfulMessages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121302,"src":"14598:18:141","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"}},"id":88090,"indexExpression":{"id":88089,"name":"versionedHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87903,"src":"14617:13:141","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14598:33:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":88091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14634:4:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"14598:40:141","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":88093,"nodeType":"ExpressionStatement","src":"14598:40:141"},{"eventCall":{"arguments":[{"id":88095,"name":"versionedHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87903,"src":"14672:13:141","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":88094,"name":"RelayedMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121347,"src":"14657:14:141","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":88096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14657:29:141","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":88097,"nodeType":"EmitStatement","src":"14652:34:141"}]}}]},"baseFunctions":[121641],"documentation":{"id":87832,"nodeType":"StructuredDocumentation","src":"9173:686:141","text":"@notice Relays a message that was sent by the other CrossDomainMessenger contract. Can only\n         be executed via cross-chain call from the other messenger OR if the message was\n         already received once and is currently being replayed.\n @param _nonce       Nonce of the message being relayed.\n @param _sender      Address of the user who sent the message.\n @param _target      Address that the message is targeted at.\n @param _value       Native token value to send with the message.\n @param _minGasLimit Minimum amount of gas that the message can be executed with.\n @param _message     Message to send to the target."},"functionSelector":"d764ad0b","implemented":true,"kind":"function","modifiers":[],"name":"relayMessage","nameLocation":"9873:12:141","overrides":{"id":87846,"nodeType":"OverrideSpecifier","overrides":[],"src":"10094:8:141"},"parameters":{"id":87845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87834,"mutability":"mutable","name":"_nonce","nameLocation":"9903:6:141","nodeType":"VariableDeclaration","scope":88123,"src":"9895:14:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":87833,"name":"uint256","nodeType":"ElementaryTypeName","src":"9895:7:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":87836,"mutability":"mutable","name":"_sender","nameLocation":"9927:7:141","nodeType":"VariableDeclaration","scope":88123,"src":"9919:15:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87835,"name":"address","nodeType":"ElementaryTypeName","src":"9919:7:141","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87838,"mutability":"mutable","name":"_target","nameLocation":"9952:7:141","nodeType":"VariableDeclaration","scope":88123,"src":"9944:15:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87837,"name":"address","nodeType":"ElementaryTypeName","src":"9944:7:141","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87840,"mutability":"mutable","name":"_value","nameLocation":"9977:6:141","nodeType":"VariableDeclaration","scope":88123,"src":"9969:14:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":87839,"name":"uint256","nodeType":"ElementaryTypeName","src":"9969:7:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":87842,"mutability":"mutable","name":"_minGasLimit","nameLocation":"10001:12:141","nodeType":"VariableDeclaration","scope":88123,"src":"9993:20:141","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":87841,"name":"uint256","nodeType":"ElementaryTypeName","src":"9993:7:141","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":87844,"mutability":"mutable","name":"_message","nameLocation":"10038:8:141","nodeType":"VariableDeclaration","scope":88123,"src":"10023:23:141","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":87843,"name":"bytes","nodeType":"ElementaryTypeName","src":"10023:5:141","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9885:167:141"},"returnParameters":{"id":87847,"nodeType":"ParameterList","parameters":[],"src":"10107:0:141"},"scope":88124,"stateMutability":"payable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":87433,"name":"CrossDomainMessenger","nodeType":"IdentifierPath","referencedDeclaration":121789,"src":"1215:20:141"},"id":87434,"nodeType":"InheritanceSpecifier","src":"1215:20:141"},{"baseName":{"id":87435,"name":"OnApprove","nodeType":"IdentifierPath","referencedDeclaration":91828,"src":"1237:9:141"},"id":87436,"nodeType":"InheritanceSpecifier","src":"1237:9:141"},{"baseName":{"id":87437,"name":"ISemver","nodeType":"IdentifierPath","referencedDeclaration":122319,"src":"1248:7:141"},"id":87438,"nodeType":"InheritanceSpecifier","src":"1248:7:141"}],"canonicalName":"L1CrossDomainMessenger","contractDependencies":[],"contractKind":"contract","documentation":{"id":87432,"nodeType":"StructuredDocumentation","src":"852:328:141","text":"@custom:proxied\n @title L1CrossDomainMessenger\n @notice The L1CrossDomainMessenger is a message passing interface between L1 and L2 responsible\n         for sending and receiving data on the L1 side. Users are encouraged to use this\n         interface instead of interacting with lower-level contracts directly."},"fullyImplemented":true,"linearizedBaseContracts":[88124,122319,91828,121789,121254,47725,121213],"name":"L1CrossDomainMessenger","nameLocation":"1189:22:141","scope":88125,"usedErrors":[]}],"license":"MIT"},"id":141}