{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"bridgeERC20","inputs":[{"name":"_l1Token","type":"address","internalType":"address"},{"name":"_l2Token","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_minGasLimit","type":"uint32","internalType":"uint32"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"bridgeERC20To","inputs":[{"name":"_l1Token","type":"address","internalType":"address"},{"name":"_l2Token","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_minGasLimit","type":"uint32","internalType":"uint32"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deposits","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"finalizeERC20Withdrawal","inputs":[{"name":"_l1Token","type":"address","internalType":"address"},{"name":"_l2Token","type":"address","internalType":"address"},{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"l1Usdc","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"l2TokenBridge","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"l2Usdc","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"messenger","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"otherBridge","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"ERC20DepositInitiated","inputs":[{"name":"l1Token","type":"address","indexed":true,"internalType":"address"},{"name":"l2Token","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"extraData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"ERC20WithdrawalFinalized","inputs":[{"name":"l1Token","type":"address","indexed":true,"internalType":"address"},{"name":"l2Token","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"extraData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AddressInsufficientBalance","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"FailedInnerCall","inputs":[]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x6080604052348015600e575f80fd5b5061110c8061001c5f395ff3fe608060405234801561000f575f80fd5b506004361061009f575f3560e01c80638f601f6611610072578063a1b4bc0411610058578063a1b4bc041461018a578063a9f9e675146101aa578063c89701a2146101bd575f80fd5b80638f601f661461013457806391c49bf81461016c575f80fd5b80633cb747bf146100a3578063540abf73146100ec57806356c3b587146101015780638708762314610121575b5f80fd5b5f546100c29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100ff6100fa366004610d0b565b6101dd565b005b6002546100c29073ffffffffffffffffffffffffffffffffffffffff1681565b6100ff61012f366004610d9b565b6101f6565b61015e610142366004610e19565b600460209081525f928352604080842090915290825290205481565b6040519081526020016100e3565b60015473ffffffffffffffffffffffffffffffffffffffff166100c2565b6003546100c29073ffffffffffffffffffffffffffffffffffffffff1681565b6100ff6101b8366004610e50565b6102a2565b6001546100c29073ffffffffffffffffffffffffffffffffffffffff1681565b6101ed878733888888888861063e565b50505050505050565b333b1561028a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084015b60405180910390fd5b61029a868633338888888861063e565b505050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314801561037357506001545f54604080517f6e296e45000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9384169390921691636e296e45916004808201926020929091908290030181865afa158015610337573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061035b9190610ec3565b73ffffffffffffffffffffffffffffffffffffffff16145b610425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a401610281565b600254879073ffffffffffffffffffffffffffffffffffffffff8083169116146104ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6e6f74204c3120757364630000000000000000000000000000000000000000006044820152606401610281565b600354879073ffffffffffffffffffffffffffffffffffffffff808316911614610531576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6e6f74204c3220757364630000000000000000000000000000000000000000006044820152606401610281565b73ffffffffffffffffffffffffffffffffffffffff808a165f908152600460209081526040808320938c168352929052205461056e908690610f0b565b73ffffffffffffffffffffffffffffffffffffffff808b165f818152600460209081526040808320948e16835293905291909120919091556105b190878761097c565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f3ceee06c1e37648fcbb6ed52e17b3e1f275a1f8c7b22a84b2b84732431e046b38989898960405161062b9493929190610f65565b60405180910390a4505050505050505050565b600254889073ffffffffffffffffffffffffffffffffffffffff8083169116146106c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6e6f74204c3120757364630000000000000000000000000000000000000000006044820152606401610281565b600354889073ffffffffffffffffffffffffffffffffffffffff80831691161461074a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6e6f74204c3220757364630000000000000000000000000000000000000000006044820152606401610281565b61076c73ffffffffffffffffffffffffffffffffffffffff8b16893089610a02565b73ffffffffffffffffffffffffffffffffffffffff808b165f908152600460209081526040808320938d16835292905220546107a9908790610fa4565b73ffffffffffffffffffffffffffffffffffffffff808c165f9081526004602090815260408083208e851684529091528082209390935554600154925190821692633dbb202b9216907f662a633a000000000000000000000000000000000000000000000000000000009061082e908f908f908f908f908f908e908e90602401610fb7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b90921682526108c192918a9060040161104d565b5f604051808303815f87803b1580156108d8575f80fd5b505af11580156108ea573d5f803e3d5ffd5b505050508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f718594027abd4eaed59f95162563e0cc6d0e8d5b86b1c7be8b1b0ac3343d03968a8a89896040516109689493929190610f65565b60405180910390a450505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff8381166024830152604482018390526109fd91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610a4e565b505050565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052610a489186918216906323b872dd906084016109b6565b50505050565b5f610a6f73ffffffffffffffffffffffffffffffffffffffff841683610ae2565b905080515f14158015610a93575080806020019051810190610a9191906110ca565b155b156109fd576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610281565b6060610aef83835f610af8565b90505b92915050565b606081471015610b36576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610281565b5f808573ffffffffffffffffffffffffffffffffffffffff168486604051610b5e91906110e9565b5f6040518083038185875af1925050503d805f8114610b98576040519150601f19603f3d011682016040523d82523d5f602084013e610b9d565b606091505b5091509150610bad868383610bb9565b925050505b9392505050565b606082610bce57610bc982610c48565b610bb2565b8151158015610bf2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610c41576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610281565b5080610bb2565b805115610c585780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b73ffffffffffffffffffffffffffffffffffffffff81168114610c8a575f80fd5b803563ffffffff81168114610cc1575f80fd5b919050565b5f8083601f840112610cd6575f80fd5b50813567ffffffffffffffff811115610ced575f80fd5b602083019150836020828501011115610d04575f80fd5b9250929050565b5f805f805f805f60c0888a031215610d21575f80fd5b8735610d2c81610c8d565b96506020880135610d3c81610c8d565b95506040880135610d4c81610c8d565b945060608801359350610d6160808901610cae565b925060a088013567ffffffffffffffff811115610d7c575f80fd5b610d888a828b01610cc6565b989b979a50959850939692959293505050565b5f805f805f8060a08789031215610db0575f80fd5b8635610dbb81610c8d565b95506020870135610dcb81610c8d565b945060408701359350610de060608801610cae565b9250608087013567ffffffffffffffff811115610dfb575f80fd5b610e0789828a01610cc6565b979a9699509497509295939492505050565b5f8060408385031215610e2a575f80fd5b8235610e3581610c8d565b91506020830135610e4581610c8d565b809150509250929050565b5f805f805f805f60c0888a031215610e66575f80fd5b8735610e7181610c8d565b96506020880135610e8181610c8d565b95506040880135610e9181610c8d565b94506060880135610ea181610c8d565b93506080880135925060a088013567ffffffffffffffff811115610d7c575f80fd5b5f60208284031215610ed3575f80fd5b8151610bb281610c8d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b81810381811115610af257610af2610ede565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152606060408201525f610f9a606083018486610f1e565b9695505050505050565b80820180821115610af257610af2610ede565b73ffffffffffffffffffffffffffffffffffffffff8816815273ffffffffffffffffffffffffffffffffffffffff8716602082015273ffffffffffffffffffffffffffffffffffffffff8616604082015273ffffffffffffffffffffffffffffffffffffffff8516606082015283608082015260c060a08201525f61104060c083018486610f1e565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201525f83518060608401528060208601608085015e5f6080828501015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505063ffffffff83166040830152949350505050565b5f602082840312156110da575f80fd5b81518015158114610bb2575f80fd5b5f82518060208501845e5f92019182525091905056fea164736f6c634300081a000a","sourceMap":"735:6954:92:-:0;;;1654:17;;;;;;;;;;735:6954;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f80fd5b506004361061009f575f3560e01c80638f601f6611610072578063a1b4bc0411610058578063a1b4bc041461018a578063a9f9e675146101aa578063c89701a2146101bd575f80fd5b80638f601f661461013457806391c49bf81461016c575f80fd5b80633cb747bf146100a3578063540abf73146100ec57806356c3b587146101015780638708762314610121575b5f80fd5b5f546100c29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100ff6100fa366004610d0b565b6101dd565b005b6002546100c29073ffffffffffffffffffffffffffffffffffffffff1681565b6100ff61012f366004610d9b565b6101f6565b61015e610142366004610e19565b600460209081525f928352604080842090915290825290205481565b6040519081526020016100e3565b60015473ffffffffffffffffffffffffffffffffffffffff166100c2565b6003546100c29073ffffffffffffffffffffffffffffffffffffffff1681565b6100ff6101b8366004610e50565b6102a2565b6001546100c29073ffffffffffffffffffffffffffffffffffffffff1681565b6101ed878733888888888861063e565b50505050505050565b333b1561028a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084015b60405180910390fd5b61029a868633338888888861063e565b505050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314801561037357506001545f54604080517f6e296e45000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9384169390921691636e296e45916004808201926020929091908290030181865afa158015610337573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061035b9190610ec3565b73ffffffffffffffffffffffffffffffffffffffff16145b610425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a401610281565b600254879073ffffffffffffffffffffffffffffffffffffffff8083169116146104ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6e6f74204c3120757364630000000000000000000000000000000000000000006044820152606401610281565b600354879073ffffffffffffffffffffffffffffffffffffffff808316911614610531576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6e6f74204c3220757364630000000000000000000000000000000000000000006044820152606401610281565b73ffffffffffffffffffffffffffffffffffffffff808a165f908152600460209081526040808320938c168352929052205461056e908690610f0b565b73ffffffffffffffffffffffffffffffffffffffff808b165f818152600460209081526040808320948e16835293905291909120919091556105b190878761097c565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f3ceee06c1e37648fcbb6ed52e17b3e1f275a1f8c7b22a84b2b84732431e046b38989898960405161062b9493929190610f65565b60405180910390a4505050505050505050565b600254889073ffffffffffffffffffffffffffffffffffffffff8083169116146106c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6e6f74204c3120757364630000000000000000000000000000000000000000006044820152606401610281565b600354889073ffffffffffffffffffffffffffffffffffffffff80831691161461074a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6e6f74204c3220757364630000000000000000000000000000000000000000006044820152606401610281565b61076c73ffffffffffffffffffffffffffffffffffffffff8b16893089610a02565b73ffffffffffffffffffffffffffffffffffffffff808b165f908152600460209081526040808320938d16835292905220546107a9908790610fa4565b73ffffffffffffffffffffffffffffffffffffffff808c165f9081526004602090815260408083208e851684529091528082209390935554600154925190821692633dbb202b9216907f662a633a000000000000000000000000000000000000000000000000000000009061082e908f908f908f908f908f908e908e90602401610fb7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b90921682526108c192918a9060040161104d565b5f604051808303815f87803b1580156108d8575f80fd5b505af11580156108ea573d5f803e3d5ffd5b505050508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f718594027abd4eaed59f95162563e0cc6d0e8d5b86b1c7be8b1b0ac3343d03968a8a89896040516109689493929190610f65565b60405180910390a450505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff8381166024830152604482018390526109fd91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610a4e565b505050565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052610a489186918216906323b872dd906084016109b6565b50505050565b5f610a6f73ffffffffffffffffffffffffffffffffffffffff841683610ae2565b905080515f14158015610a93575080806020019051810190610a9191906110ca565b155b156109fd576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610281565b6060610aef83835f610af8565b90505b92915050565b606081471015610b36576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610281565b5f808573ffffffffffffffffffffffffffffffffffffffff168486604051610b5e91906110e9565b5f6040518083038185875af1925050503d805f8114610b98576040519150601f19603f3d011682016040523d82523d5f602084013e610b9d565b606091505b5091509150610bad868383610bb9565b925050505b9392505050565b606082610bce57610bc982610c48565b610bb2565b8151158015610bf2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610c41576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610281565b5080610bb2565b805115610c585780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b73ffffffffffffffffffffffffffffffffffffffff81168114610c8a575f80fd5b803563ffffffff81168114610cc1575f80fd5b919050565b5f8083601f840112610cd6575f80fd5b50813567ffffffffffffffff811115610ced575f80fd5b602083019150836020828501011115610d04575f80fd5b9250929050565b5f805f805f805f60c0888a031215610d21575f80fd5b8735610d2c81610c8d565b96506020880135610d3c81610c8d565b95506040880135610d4c81610c8d565b945060608801359350610d6160808901610cae565b925060a088013567ffffffffffffffff811115610d7c575f80fd5b610d888a828b01610cc6565b989b979a50959850939692959293505050565b5f805f805f8060a08789031215610db0575f80fd5b8635610dbb81610c8d565b95506020870135610dcb81610c8d565b945060408701359350610de060608801610cae565b9250608087013567ffffffffffffffff811115610dfb575f80fd5b610e0789828a01610cc6565b979a9699509497509295939492505050565b5f8060408385031215610e2a575f80fd5b8235610e3581610c8d565b91506020830135610e4581610c8d565b809150509250929050565b5f805f805f805f60c0888a031215610e66575f80fd5b8735610e7181610c8d565b96506020880135610e8181610c8d565b95506040880135610e9181610c8d565b94506060880135610ea181610c8d565b93506080880135925060a088013567ffffffffffffffff811115610d7c575f80fd5b5f60208284031215610ed3575f80fd5b8151610bb281610c8d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b81810381811115610af257610af2610ede565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152606060408201525f610f9a606083018486610f1e565b9695505050505050565b80820180821115610af257610af2610ede565b73ffffffffffffffffffffffffffffffffffffffff8816815273ffffffffffffffffffffffffffffffffffffffff8716602082015273ffffffffffffffffffffffffffffffffffffffff8616604082015273ffffffffffffffffffffffffffffffffffffffff8516606082015283608082015260c060a08201525f61104060c083018486610f1e565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201525f83518060608401528060208601608085015e5f6080828501015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505063ffffffff83166040830152949350505050565b5f602082840312156110da575f80fd5b81518015158114610bb2575f80fd5b5f82518060208501845e5f92019182525091905056fea164736f6c634300081a000a","sourceMap":"735:6954:92:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;94:24:96;;;;;;;;;;;;190:42:100;178:55;;;160:74;;148:2;133:18;94:24:96;;;;;;;;4696:338:92;;;;;;:::i;:::-;;:::i;:::-;;156:21:96;;;;;;;;;3644:338:92;;;;;;:::i;:::-;;:::i;201:63:94:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;3373:25:100;;;3361:2;3346:18;201:63:94;3227:177:100;6220:101:92;6302:11;;;;6220:101;;183:21:96;;;;;;;;;5499:529:92;;;;;;:::i;:::-;;:::i;124:26:96:-;;;;;;;;;4696:338:92;4934:93;4956:8;4966;4976:10;4988:3;4993:7;5002:12;5016:10;;4934:21;:93::i;:::-;4696:338;;;;;;;:::o;3644:::-;1186:10;1465:19:95;:23;1158:99:92;;;;;;;4706:2:100;1158:99:92;;;4688:21:100;4745:2;4725:18;;;4718:30;4784:34;4764:18;;;4757:62;4855:25;4835:18;;;4828:53;4898:19;;1158:99:92;;;;;;;;;3875:100:::1;3897:8;3907;3917:10;3929;3941:7;3950:12;3964:10;;3875:21;:100::i;:::-;3644:338:::0;;;;;;:::o;5499:529::-;1456:9;;;;1442:10;:23;:97;;;;-1:-1:-1;1528:11:92;;;1491:9;1469:55;;;;;;;;1528:11;;;;;1491:9;;;;1469:53;;:55;;;;;;;;;;;;;;;1491:9;1469:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:70;;;1442:97;1421:209;;;;;;;5386:2:100;1421:209:92;;;5368:21:100;5425:2;5405:18;;;5398:30;5464:34;5444:18;;;5437:62;5535:34;5515:18;;;5508:62;5607:3;5586:19;;;5579:32;5628:19;;1421:209:92;5184:469:100;1421:209:92;273:6:96::1;::::0;5754:8:92;;273:6:96::1;264:15:::0;;::::1;273:6:::0;::::1;264:15;256:39;;;::::0;::::1;::::0;;5860:2:100;256:39:96::1;::::0;::::1;5842:21:100::0;5899:2;5879:18;;;5872:30;5938:13;5918:18;;;5911:41;5969:18;;256:39:96::1;5658:335:100::0;256:39:96::1;381:6:::2;::::0;5783:8:92;;381:6:96::2;372:15:::0;;::::2;381:6:::0;::::2;372:15;364:39;;;::::0;::::2;::::0;;6200:2:100;364:39:96::2;::::0;::::2;6182:21:100::0;6239:2;6219:18;;;6212:30;6278:13;6258:18;;;6251:41;6309:18;;364:39:96::2;5998:335:100::0;364:39:96::2;5838:18:92::3;::::0;;::::3;;::::0;;;:8:::3;:18;::::0;;;;;;;:28;;::::3;::::0;;;;;;;:38:::3;::::0;5869:7;;5838:38:::3;:::i;:::-;5807:18;::::0;;::::3;;::::0;;;:8:::3;:18;::::0;;;;;;;:28;;::::3;::::0;;;;;;;;;:69;;;;5886:43:::3;::::0;5916:3;5921:7;5886:29:::3;:43::i;:::-;5989:5;5944:77;;5979:8;5944:77;;5969:8;5944:77;;;5996:3;6001:7;6010:10;;5944:77;;;;;;;;;:::i;:::-;;;;;;;;305:1:96::2;1640::92::1;5499:529:::0;;;;;;;:::o;6862:825::-;273:6:96;;7120:8:92;;273:6:96;264:15;;;273:6;;264:15;256:39;;;;;;;5860:2:100;256:39:96;;;5842:21:100;5899:2;5879:18;;;5872:30;5938:13;5918:18;;;5911:41;5969:18;;256:39:96;5658:335:100;256:39:96;381:6:::1;::::0;7149:8:92;;381:6:96::1;372:15:::0;;::::1;381:6:::0;::::1;372:15;364:39;;;::::0;::::1;::::0;;6200:2:100;364:39:96::1;::::0;::::1;6182:21:100::0;6239:2;6219:18;;;6212:30;6278:13;6258:18;;;6251:41;6309:18;;364:39:96::1;5998:335:100::0;364:39:96::1;7173:64:92::2;:33;::::0;::::2;7207:5:::0;7222:4:::2;7229:7:::0;7173:33:::2;:64::i;:::-;7278:18;::::0;;::::2;;::::0;;;:8:::2;:18;::::0;;;;;;;:28;;::::2;::::0;;;;;;;:38:::2;::::0;7309:7;;7278:38:::2;:::i;:::-;7247:18;::::0;;::::2;;::::0;;;:8:::2;:18;::::0;;;;;;;:28;;::::2;::::0;;;;;;;;:69;;;;7349:9;;7385:11;7410:145;;7349:9;;::::2;::::0;7327:44:::2;::::0;7385:11:::2;::::0;7450:38;;7410:145:::2;::::0;7256:8;;7266;;7510:5;;7517:3;;7522:7;;7531:10;;;;7410:145:::2;;;:::i;:::-;;::::0;;;;;::::2;::::0;;;;;;::::2;::::0;::::2;::::0;;::::2;;::::0;;;::::2;;::::0;;7327:264;::::2;::::0;;;;;;;;::::2;::::0;;7569:12;;7327:264:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;7648:5;7606:74;;7638:8;7606:74;;7628:8;7606:74;;;7655:3;7660:7;7669:10;;7606:74;;;;;;;;;:::i;:::-;;;;;;;;305:1:96::1;6862:825:92::0;;;;;;;;;:::o;1282:160:90:-;1391:43;;1406:14;9245:55:100;;;1391:43:90;;;9227:74:100;9317:18;;;9310:34;;;1364:71:90;;1384:5;;1406:14;;;;;9200:18:100;;1391:43:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1364:19;:71::i;:::-;1282:160;;;:::o;1681:188::-;1808:53;;1823:18;9575:55:100;;;1808:53:90;;;9557:74:100;9667:55;;;9647:18;;;9640:83;9739:18;;;9732:34;;;1781:81:90;;1801:5;;1823:18;;;;;9530::100;;1808:53:90;9355:417:100;1781:81:90;1681:188;;;;:::o;4038:629::-;4457:23;4483:33;:27;;;4511:4;4483:27;:33::i;:::-;4457:59;;4530:10;:17;4551:1;4530:22;;:57;;;;;4568:10;4557:30;;;;;;;;;;;;:::i;:::-;4556:31;4530:57;4526:135;;;4610:40;;;;;190:42:100;178:55;;4610:40:90;;;160:74:100;133:18;;4610:40:90;14:226:100;2719:151:83;2794:12;2825:38;2847:6;2855:4;2861:1;2825:21;:38::i;:::-;2818:45;;2719:151;;;;;:::o;3194:394::-;3293:12;3345:5;3321:21;:29;3317:108;;;3373:41;;;;;3408:4;3373:41;;;160:74:100;133:18;;3373:41:83;14:226:100;3317:108:83;3435:12;3449:23;3476:6;:11;;3496:5;3504:4;3476:33;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3434:75;;;;3526:55;3553:6;3561:7;3570:10;3526:26;:55::i;:::-;3519:62;;;;3194:394;;;;;;:::o;4641:610::-;4809:12;4842:7;4837:408;;4865:19;4873:10;4865:7;:19::i;:::-;4837:408;;;5089:17;;:22;:49;;;;-1:-1:-1;5115:18:83;;;;:23;5089:49;5085:119;;;5165:24;;;;;190:42:100;178:55;;5165:24:83;;;160:74:100;133:18;;5165:24:83;14:226:100;5085:119:83;-1:-1:-1;5224:10:83;5217:17;;5787:516;5918:17;;:21;5914:383;;6146:10;6140:17;6202:15;6189:10;6185:2;6181:19;6174:44;5914:383;6269:17;;;;;;;;;;;;;;5914:383;5787:516;:::o;245:154:100:-;331:42;324:5;320:54;313:5;310:65;300:93;;389:1;386;379:12;404:163;471:20;;531:10;520:22;;510:33;;500:61;;557:1;554;547:12;500:61;404:163;;;:::o;572:347::-;623:8;633:6;687:3;680:4;672:6;668:17;664:27;654:55;;705:1;702;695:12;654:55;-1:-1:-1;728:20:100;;771:18;760:30;;757:50;;;803:1;800;793:12;757:50;840:4;832:6;828:17;816:29;;892:3;885:4;876:6;868;864:19;860:30;857:39;854:59;;;909:1;906;899:12;854:59;572:347;;;;;:::o;924:1021::-;1038:6;1046;1054;1062;1070;1078;1086;1139:3;1127:9;1118:7;1114:23;1110:33;1107:53;;;1156:1;1153;1146:12;1107:53;1195:9;1182:23;1214:31;1239:5;1214:31;:::i;:::-;1264:5;-1:-1:-1;1321:2:100;1306:18;;1293:32;1334:33;1293:32;1334:33;:::i;:::-;1386:7;-1:-1:-1;1445:2:100;1430:18;;1417:32;1458:33;1417:32;1458:33;:::i;:::-;1510:7;-1:-1:-1;1590:2:100;1575:18;;1562:32;;-1:-1:-1;1639:38:100;1672:3;1657:19;;1639:38;:::i;:::-;1629:48;;1728:3;1717:9;1713:19;1700:33;1756:18;1748:6;1745:30;1742:50;;;1788:1;1785;1778:12;1742:50;1827:58;1877:7;1868:6;1857:9;1853:22;1827:58;:::i;:::-;924:1021;;;;-1:-1:-1;924:1021:100;;-1:-1:-1;924:1021:100;;;;1801:84;;-1:-1:-1;;;924:1021:100:o;1950:879::-;2055:6;2063;2071;2079;2087;2095;2148:3;2136:9;2127:7;2123:23;2119:33;2116:53;;;2165:1;2162;2155:12;2116:53;2204:9;2191:23;2223:31;2248:5;2223:31;:::i;:::-;2273:5;-1:-1:-1;2330:2:100;2315:18;;2302:32;2343:33;2302:32;2343:33;:::i;:::-;2395:7;-1:-1:-1;2475:2:100;2460:18;;2447:32;;-1:-1:-1;2524:37:100;2557:2;2542:18;;2524:37;:::i;:::-;2514:47;;2612:3;2601:9;2597:19;2584:33;2640:18;2632:6;2629:30;2626:50;;;2672:1;2669;2662:12;2626:50;2711:58;2761:7;2752:6;2741:9;2737:22;2711:58;:::i;:::-;1950:879;;;;-1:-1:-1;1950:879:100;;-1:-1:-1;1950:879:100;;2788:8;;1950:879;-1:-1:-1;;;1950:879:100:o;2834:388::-;2902:6;2910;2963:2;2951:9;2942:7;2938:23;2934:32;2931:52;;;2979:1;2976;2969:12;2931:52;3018:9;3005:23;3037:31;3062:5;3037:31;:::i;:::-;3087:5;-1:-1:-1;3144:2:100;3129:18;;3116:32;3157:33;3116:32;3157:33;:::i;:::-;3209:7;3199:17;;;2834:388;;;;;:::o;3409:1090::-;3524:6;3532;3540;3548;3556;3564;3572;3625:3;3613:9;3604:7;3600:23;3596:33;3593:53;;;3642:1;3639;3632:12;3593:53;3681:9;3668:23;3700:31;3725:5;3700:31;:::i;:::-;3750:5;-1:-1:-1;3807:2:100;3792:18;;3779:32;3820:33;3779:32;3820:33;:::i;:::-;3872:7;-1:-1:-1;3931:2:100;3916:18;;3903:32;3944:33;3903:32;3944:33;:::i;:::-;3996:7;-1:-1:-1;4055:2:100;4040:18;;4027:32;4068:33;4027:32;4068:33;:::i;:::-;4120:7;-1:-1:-1;4200:3:100;4185:19;;4172:33;;-1:-1:-1;4282:3:100;4267:19;;4254:33;4310:18;4299:30;;4296:50;;;4342:1;4339;4332:12;4928:251;4998:6;5051:2;5039:9;5030:7;5026:23;5022:32;5019:52;;;5067:1;5064;5057:12;5019:52;5099:9;5093:16;5118:31;5143:5;5118:31;:::i;6338:184::-;6390:77;6387:1;6380:88;6487:4;6484:1;6477:15;6511:4;6508:1;6501:15;6527:128;6594:9;;;6615:11;;;6612:37;;;6629:18;;:::i;6660:325::-;6748:6;6743:3;6736:19;6800:6;6793:5;6786:4;6781:3;6777:14;6764:43;;6852:1;6845:4;6836:6;6831:3;6827:16;6823:27;6816:38;6718:3;6974:4;6904:66;6899:2;6891:6;6887:15;6883:88;6878:3;6874:98;6870:109;6863:116;;6660:325;;;;:::o;6990:435::-;7215:42;7207:6;7203:55;7192:9;7185:74;7295:6;7290:2;7279:9;7275:18;7268:34;7338:2;7333;7322:9;7318:18;7311:30;7166:4;7358:61;7415:2;7404:9;7400:18;7392:6;7384;7358:61;:::i;:::-;7350:69;6990:435;-1:-1:-1;;;;;;6990:435:100:o;7430:125::-;7495:9;;;7516:10;;;7513:36;;;7529:18;;:::i;7560:799::-;7869:42;7861:6;7857:55;7846:9;7839:74;7961:42;7953:6;7949:55;7944:2;7933:9;7929:18;7922:83;8053:42;8045:6;8041:55;8036:2;8025:9;8021:18;8014:83;8145:42;8137:6;8133:55;8128:2;8117:9;8113:18;8106:83;8226:6;8220:3;8209:9;8205:19;8198:35;8270:3;8264;8253:9;8249:19;8242:32;7820:4;8291:62;8348:3;8337:9;8333:19;8325:6;8317;8291:62;:::i;:::-;8283:70;7560:799;-1:-1:-1;;;;;;;;;7560:799:100:o;8364:684::-;8577:42;8569:6;8565:55;8554:9;8547:74;8657:2;8652;8641:9;8637:18;8630:30;8528:4;8689:6;8683:13;8732:6;8727:2;8716:9;8712:18;8705:34;8792:6;8787:2;8779:6;8775:15;8769:3;8758:9;8754:19;8748:51;8849:1;8843:3;8834:6;8823:9;8819:22;8815:32;8808:43;8978:3;8908:66;8903:2;8895:6;8891:15;8887:88;8876:9;8872:104;8868:114;8860:122;;;9030:10;9022:6;9018:23;9013:2;9002:9;8998:18;8991:51;8364:684;;;;;;:::o;9777:277::-;9844:6;9897:2;9885:9;9876:7;9872:23;9868:32;9865:52;;;9913:1;9910;9903:12;9865:52;9945:9;9939:16;9998:5;9991:13;9984:21;9977:5;9974:32;9964:60;;10020:1;10017;10010:12;10059:301;10188:3;10226:6;10220:13;10272:6;10265:4;10257:6;10253:17;10248:3;10242:37;10334:1;10298:16;;10323:13;;;-1:-1:-1;10298:16:100;10059:301;-1:-1:-1;10059:301:100:o","linkReferences":{}},"methodIdentifiers":{"bridgeERC20(address,address,uint256,uint32,bytes)":"87087623","bridgeERC20To(address,address,address,uint256,uint32,bytes)":"540abf73","deposits(address,address)":"8f601f66","finalizeERC20Withdrawal(address,address,address,address,uint256,bytes)":"a9f9e675","l1Usdc()":"56c3b587","l2TokenBridge()":"91c49bf8","l2Usdc()":"a1b4bc04","messenger()":"3cb747bf","otherBridge()":"c89701a2"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"ERC20DepositInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"ERC20WithdrawalFinalized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_l1Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_l2Token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"bridgeERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_l1Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_l2Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"bridgeERC20To\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"deposits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_l1Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_l2Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"finalizeERC20Withdrawal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1Usdc\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l2TokenBridge\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l2Usdc\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messenger\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"otherBridge\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}]},\"events\":{\"ERC20DepositInitiated(address,address,address,address,uint256,bytes)\":{\"custom:legacy\":\"@notice Emitted whenever an ERC20 deposit is initiated.\",\"params\":{\"amount\":\"Amount of the ERC20 deposited.\",\"extraData\":\"Extra data attached to the deposit.\",\"from\":\"Address of the depositor.\",\"l1Token\":\"Address of the token on L1.\",\"l2Token\":\"Address of the corresponding token on L2.\",\"to\":\"Address of the recipient on L2.\"}},\"ERC20WithdrawalFinalized(address,address,address,address,uint256,bytes)\":{\"custom:legacy\":\"@notice Emitted whenever an ERC20 withdrawal is finalized.\",\"params\":{\"amount\":\"Amount of the ERC20 withdrawn.\",\"extraData\":\"Extra data attached to the withdrawal.\",\"from\":\"Address of the withdrawer.\",\"l1Token\":\"Address of the token on L1.\",\"l2Token\":\"Address of the corresponding token on L2.\",\"to\":\"Address of the recipient on L1.\"}}},\"kind\":\"dev\",\"methods\":{\"bridgeERC20(address,address,uint256,uint32,bytes)\":{\"custom:legacy\":\"@notice Deposits some amount of ERC20 tokens into the sender's account on L2.\",\"params\":{\"_amount\":\"Amount of the ERC20 to deposit.\",\"_extraData\":\"Optional data to forward to L2. Data supplied here will not be used to                     execute any code on L2 and is only emitted as extra data for the                     convenience of off-chain tooling.\",\"_l1Token\":\"Address of the L1 token being deposited.\",\"_l2Token\":\"Address of the corresponding token on L2.\",\"_minGasLimit\":\"Minimum gas limit for the deposit message on L2.\"}},\"bridgeERC20To(address,address,address,uint256,uint32,bytes)\":{\"custom:legacy\":\"@notice Deposits some amount of ERC20 tokens into a target account on L2.\",\"params\":{\"_amount\":\"Amount of the ERC20 to deposit.\",\"_extraData\":\"Optional data to forward to L2. Data supplied here will not be used to                     execute any code on L2 and is only emitted as extra data for the                     convenience of off-chain tooling.\",\"_l1Token\":\"Address of the L1 token being deposited.\",\"_l2Token\":\"Address of the corresponding token on L2.\",\"_minGasLimit\":\"Minimum gas limit for the deposit message on L2.\",\"_to\":\"Address of the recipient on L2.\"}},\"finalizeERC20Withdrawal(address,address,address,address,uint256,bytes)\":{\"custom:legacy\":\"@notice Finalizes a withdrawal of ERC20 tokens from L2.\",\"params\":{\"_amount\":\"Amount of the ERC20 to withdraw.\",\"_extraData\":\"Optional data forwarded from L2.\",\"_from\":\"Address of the withdrawer on L2.\",\"_l1Token\":\"Address of the token on L1.\",\"_l2Token\":\"Address of the corresponding token on L2.\",\"_to\":\"Address of the recipient on L1.\"}},\"l2TokenBridge()\":{\"custom:legacy\":\"@notice Retrieves the access of the corresponding L2 bridge contract.\",\"returns\":{\"_0\":\"Address of the corresponding L2 bridge contract.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/tokamak-contracts/USDC/L1/tokamak-UsdcBridge/L1UsdcBridge.sol\":\"L1UsdcBridge\"},\"evmVersion\":\"cancun\",\"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\":{\"src/tokamak-contracts/USDC/L1/libraries/Address.sol\":{\"keccak256\":\"0x7a2becd0fc138ccd81f63dc85f73aa43ac9e16107b1060dfb9bfcbc46e089060\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9cfc1478aba538118b63dca8c71983d8d522b9ac97b96364ae27dc505b675a3\",\"dweb:/ipfs/QmQJnCRPn61XoPbDtykyGGcXS4YYydmMCxcWDymhBTG6JJ\"]},\"src/tokamak-contracts/USDC/L1/libraries/IERC20.sol\":{\"keccak256\":\"0x32fc81940e398095a082754088b43bcd70dda770a819586abc34fe8b387a42b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e2c83e48dbd6c4576400811d11eccbbe8dd44d652fdbaabab22b6fa1188bba\",\"dweb:/ipfs/QmZkWkDCQGwJH44EN61jov9MY34qg15WYtAvJYvkSJusx4\"]},\"src/tokamak-contracts/USDC/L1/libraries/IERC20Permit.sol\":{\"keccak256\":\"0x38fa29834657581cb1cdb1a18762bf9f730e7f68523d63fb181606f6bea7b173\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d2fa77781be9fa115f4837d80d431761f4af463c3dbd9d5b103a4e2dcf8eee1\",\"dweb:/ipfs/QmSHYchPnZBddirEAa5wnGUgFVnBfq6v9gVJ4wdrtYxsrc\"]},\"src/tokamak-contracts/USDC/L1/libraries/SafeERC20.sol\":{\"keccak256\":\"0x1b796214de865837b31080bf4286131652925a25e206d11c1b870ea267742bae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e527f3891bbc917742346bb4cc230893bbf68eb925d2f0c70b475f3b901b3dd\",\"dweb:/ipfs/QmNeJTgxQKX7zvRCGYA81SJRMjkxcNEdemFcqpZsWJ4q9s\"]},\"src/tokamak-contracts/USDC/L1/tokamak-UsdcBridge/L1UsdcBridge.sol\":{\"keccak256\":\"0xbd0042d258b9f10397ccb81dea8fc2ee5d787e5e20bc6d03f28aa62948b8be87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2cdb3bbe78dbcf306b0a49b09f149e94ee6d1c22b16d3e2315d5b5e356dc9\",\"dweb:/ipfs/QmUcRuWcqqzDboPkVLLwdDGqj4vzc83DWp98cxsbZ1pixj\"]},\"src/tokamak-contracts/USDC/L1/tokamak-UsdcBridge/L1UsdcBridgeStorage.sol\":{\"keccak256\":\"0xcca6b8186e534ad59a4878f6756334175cd50aca504c4139d21930fce77e5b00\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4a647cb71c35e41a53248db3c03a3d05ae169180465ee6947b48efd05afd4f5\",\"dweb:/ipfs/Qmf26yXFLCm8LmX4CKCoZ6wg6pGrnJmC3VYXhLFNHsA49i\"]},\"src/tokamak-contracts/USDC/libraries/Address.sol\":{\"keccak256\":\"0x1d1dd930cd27cde1a42984254a481d8edb615a93bcea1a1d188568018751c92f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f54df028fb62a3a9ffdedba1b9209391b985b229c7c37a28acf27d7b34478246\",\"dweb:/ipfs/QmdkP1fEBq8mieprvTCMcFTihDfBNzEXwRRAE9teJ8x4nx\"]},\"src/tokamak-contracts/USDC/universal/StandardBridgeStorage.sol\":{\"keccak256\":\"0xc61c40717e55341880ec5ba5c8f7366c7f7cbe045e55cd5bab643dbb60295bac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://237615182e4d1bb0447434f22e494222f5ff9ca97f2673d55b99918eb84bd723\",\"dweb:/ipfs/Qmd8GxkGfN3uhxLQygkQws1c7d47YA6K5p6PSFYM3m8bpT\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"AddressInsufficientBalance"},{"inputs":[],"type":"error","name":"FailedInnerCall"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"address","name":"l1Token","type":"address","indexed":true},{"internalType":"address","name":"l2Token","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"bytes","name":"extraData","type":"bytes","indexed":false}],"type":"event","name":"ERC20DepositInitiated","anonymous":false},{"inputs":[{"internalType":"address","name":"l1Token","type":"address","indexed":true},{"internalType":"address","name":"l2Token","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"bytes","name":"extraData","type":"bytes","indexed":false}],"type":"event","name":"ERC20WithdrawalFinalized","anonymous":false},{"inputs":[{"internalType":"address","name":"_l1Token","type":"address"},{"internalType":"address","name":"_l2Token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint32","name":"_minGasLimit","type":"uint32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"bridgeERC20"},{"inputs":[{"internalType":"address","name":"_l1Token","type":"address"},{"internalType":"address","name":"_l2Token","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint32","name":"_minGasLimit","type":"uint32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"bridgeERC20To"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"deposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_l1Token","type":"address"},{"internalType":"address","name":"_l2Token","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"finalizeERC20Withdrawal"},{"inputs":[],"stateMutability":"view","type":"function","name":"l1Usdc","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"l2TokenBridge","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"l2Usdc","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"messenger","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"otherBridge","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"bridgeERC20(address,address,uint256,uint32,bytes)":{"custom:legacy":"@notice Deposits some amount of ERC20 tokens into the sender's account on L2.","params":{"_amount":"Amount of the ERC20 to deposit.","_extraData":"Optional data to forward to L2. Data supplied here will not be used to                     execute any code on L2 and is only emitted as extra data for the                     convenience of off-chain tooling.","_l1Token":"Address of the L1 token being deposited.","_l2Token":"Address of the corresponding token on L2.","_minGasLimit":"Minimum gas limit for the deposit message on L2."}},"bridgeERC20To(address,address,address,uint256,uint32,bytes)":{"custom:legacy":"@notice Deposits some amount of ERC20 tokens into a target account on L2.","params":{"_amount":"Amount of the ERC20 to deposit.","_extraData":"Optional data to forward to L2. Data supplied here will not be used to                     execute any code on L2 and is only emitted as extra data for the                     convenience of off-chain tooling.","_l1Token":"Address of the L1 token being deposited.","_l2Token":"Address of the corresponding token on L2.","_minGasLimit":"Minimum gas limit for the deposit message on L2.","_to":"Address of the recipient on L2."}},"finalizeERC20Withdrawal(address,address,address,address,uint256,bytes)":{"custom:legacy":"@notice Finalizes a withdrawal of ERC20 tokens from L2.","params":{"_amount":"Amount of the ERC20 to withdraw.","_extraData":"Optional data forwarded from L2.","_from":"Address of the withdrawer on L2.","_l1Token":"Address of the token on L1.","_l2Token":"Address of the corresponding token on L2.","_to":"Address of the recipient on L1."}},"l2TokenBridge()":{"custom:legacy":"@notice Retrieves the access of the corresponding L2 bridge contract.","returns":{"_0":"Address of the corresponding L2 bridge contract."}}},"version":1},"userdoc":{"kind":"user","methods":{},"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/tokamak-contracts/USDC/L1/tokamak-UsdcBridge/L1UsdcBridge.sol":"L1UsdcBridge"},"evmVersion":"cancun","libraries":{"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker":"0x4200000000000000000000000000000000000776"}},"sources":{"src/tokamak-contracts/USDC/L1/libraries/Address.sol":{"keccak256":"0x7a2becd0fc138ccd81f63dc85f73aa43ac9e16107b1060dfb9bfcbc46e089060","urls":["bzz-raw://a9cfc1478aba538118b63dca8c71983d8d522b9ac97b96364ae27dc505b675a3","dweb:/ipfs/QmQJnCRPn61XoPbDtykyGGcXS4YYydmMCxcWDymhBTG6JJ"],"license":"MIT"},"src/tokamak-contracts/USDC/L1/libraries/IERC20.sol":{"keccak256":"0x32fc81940e398095a082754088b43bcd70dda770a819586abc34fe8b387a42b4","urls":["bzz-raw://59e2c83e48dbd6c4576400811d11eccbbe8dd44d652fdbaabab22b6fa1188bba","dweb:/ipfs/QmZkWkDCQGwJH44EN61jov9MY34qg15WYtAvJYvkSJusx4"],"license":"MIT"},"src/tokamak-contracts/USDC/L1/libraries/IERC20Permit.sol":{"keccak256":"0x38fa29834657581cb1cdb1a18762bf9f730e7f68523d63fb181606f6bea7b173","urls":["bzz-raw://4d2fa77781be9fa115f4837d80d431761f4af463c3dbd9d5b103a4e2dcf8eee1","dweb:/ipfs/QmSHYchPnZBddirEAa5wnGUgFVnBfq6v9gVJ4wdrtYxsrc"],"license":"MIT"},"src/tokamak-contracts/USDC/L1/libraries/SafeERC20.sol":{"keccak256":"0x1b796214de865837b31080bf4286131652925a25e206d11c1b870ea267742bae","urls":["bzz-raw://1e527f3891bbc917742346bb4cc230893bbf68eb925d2f0c70b475f3b901b3dd","dweb:/ipfs/QmNeJTgxQKX7zvRCGYA81SJRMjkxcNEdemFcqpZsWJ4q9s"],"license":"MIT"},"src/tokamak-contracts/USDC/L1/tokamak-UsdcBridge/L1UsdcBridge.sol":{"keccak256":"0xbd0042d258b9f10397ccb81dea8fc2ee5d787e5e20bc6d03f28aa62948b8be87","urls":["bzz-raw://81e2cdb3bbe78dbcf306b0a49b09f149e94ee6d1c22b16d3e2315d5b5e356dc9","dweb:/ipfs/QmUcRuWcqqzDboPkVLLwdDGqj4vzc83DWp98cxsbZ1pixj"],"license":"MIT"},"src/tokamak-contracts/USDC/L1/tokamak-UsdcBridge/L1UsdcBridgeStorage.sol":{"keccak256":"0xcca6b8186e534ad59a4878f6756334175cd50aca504c4139d21930fce77e5b00","urls":["bzz-raw://c4a647cb71c35e41a53248db3c03a3d05ae169180465ee6947b48efd05afd4f5","dweb:/ipfs/Qmf26yXFLCm8LmX4CKCoZ6wg6pGrnJmC3VYXhLFNHsA49i"],"license":"MIT"},"src/tokamak-contracts/USDC/libraries/Address.sol":{"keccak256":"0x1d1dd930cd27cde1a42984254a481d8edb615a93bcea1a1d188568018751c92f","urls":["bzz-raw://f54df028fb62a3a9ffdedba1b9209391b985b229c7c37a28acf27d7b34478246","dweb:/ipfs/QmdkP1fEBq8mieprvTCMcFTihDfBNzEXwRRAE9teJ8x4nx"],"license":"MIT"},"src/tokamak-contracts/USDC/universal/StandardBridgeStorage.sol":{"keccak256":"0xc61c40717e55341880ec5ba5c8f7366c7f7cbe045e55cd5bab643dbb60295bac","urls":["bzz-raw://237615182e4d1bb0447434f22e494222f5ff9ca97f2673d55b99918eb84bd723","dweb:/ipfs/Qmd8GxkGfN3uhxLQygkQws1c7d47YA6K5p6PSFYM3m8bpT"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[{"astId":60997,"contract":"src/tokamak-contracts/USDC/L1/tokamak-UsdcBridge/L1UsdcBridge.sol:L1UsdcBridge","label":"messenger","offset":0,"slot":"0","type":"t_address"},{"astId":60999,"contract":"src/tokamak-contracts/USDC/L1/tokamak-UsdcBridge/L1UsdcBridge.sol:L1UsdcBridge","label":"otherBridge","offset":0,"slot":"1","type":"t_address"},{"astId":61001,"contract":"src/tokamak-contracts/USDC/L1/tokamak-UsdcBridge/L1UsdcBridge.sol:L1UsdcBridge","label":"l1Usdc","offset":0,"slot":"2","type":"t_address"},{"astId":61003,"contract":"src/tokamak-contracts/USDC/L1/tokamak-UsdcBridge/L1UsdcBridge.sol:L1UsdcBridge","label":"l2Usdc","offset":0,"slot":"3","type":"t_address"},{"astId":60697,"contract":"src/tokamak-contracts/USDC/L1/tokamak-UsdcBridge/L1UsdcBridge.sol:L1UsdcBridge","label":"deposits","offset":0,"slot":"4","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"version":1,"kind":"user"},"devdoc":{"version":1,"kind":"dev","methods":{"bridgeERC20(address,address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of the ERC20 to deposit.","_extraData":"Optional data to forward to L2. Data supplied here will not be used to                     execute any code on L2 and is only emitted as extra data for the                     convenience of off-chain tooling.","_l1Token":"Address of the L1 token being deposited.","_l2Token":"Address of the corresponding token on L2.","_minGasLimit":"Minimum gas limit for the deposit message on L2."}},"bridgeERC20To(address,address,address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of the ERC20 to deposit.","_extraData":"Optional data to forward to L2. Data supplied here will not be used to                     execute any code on L2 and is only emitted as extra data for the                     convenience of off-chain tooling.","_l1Token":"Address of the L1 token being deposited.","_l2Token":"Address of the corresponding token on L2.","_minGasLimit":"Minimum gas limit for the deposit message on L2.","_to":"Address of the recipient on L2."}},"finalizeERC20Withdrawal(address,address,address,address,uint256,bytes)":{"params":{"_amount":"Amount of the ERC20 to withdraw.","_extraData":"Optional data forwarded from L2.","_from":"Address of the withdrawer on L2.","_l1Token":"Address of the token on L1.","_l2Token":"Address of the corresponding token on L2.","_to":"Address of the recipient on L1."}},"l2TokenBridge()":{"returns":{"_0":"Address of the corresponding L2 bridge contract."}}},"events":{"ERC20DepositInitiated(address,address,address,address,uint256,bytes)":{"params":{"amount":"Amount of the ERC20 deposited.","extraData":"Extra data attached to the deposit.","from":"Address of the depositor.","l1Token":"Address of the token on L1.","l2Token":"Address of the corresponding token on L2.","to":"Address of the recipient on L2."}},"ERC20WithdrawalFinalized(address,address,address,address,uint256,bytes)":{"params":{"amount":"Amount of the ERC20 withdrawn.","extraData":"Extra data attached to the withdrawal.","from":"Address of the withdrawer.","l1Token":"Address of the token on L1.","l2Token":"Address of the corresponding token on L2.","to":"Address of the recipient on L1."}}},"errors":{"AddressEmptyCode(address)":[{"details":"There's no code at `target` (it is not a contract)."}],"AddressInsufficientBalance(address)":[{"details":"The ETH balance of the account is not enough to perform the operation."}],"FailedInnerCall()":[{"details":"A call to an address target failed. The target may have reverted."}],"SafeERC20FailedOperation(address)":[{"details":"An operation with an ERC20 token failed."}]}},"ast":{"absolutePath":"src/tokamak-contracts/USDC/L1/tokamak-UsdcBridge/L1UsdcBridge.sol","id":60506,"exportedSymbols":{"Address":[60993],"ICrossDomainMessenger":[60207],"IERC20":[59710],"IL2USDCBridge":[60223],"L1UsdcBridge":[60505],"L1UsdcBridgeStorage":[60698],"SafeERC20":[60072]},"nodeType":"SourceUnit","src":"32:7658:92","nodes":[{"id":60184,"nodeType":"PragmaDirective","src":"32:23:92","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":60186,"nodeType":"ImportDirective","src":"57:49:92","nodes":[],"absolutePath":"src/tokamak-contracts/USDC/L1/libraries/IERC20.sol","file":"../libraries/IERC20.sol","nameLocation":"-1:-1:-1","scope":60506,"sourceUnit":59711,"symbolAliases":[{"foreign":{"id":60185,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59710,"src":"66:6:92","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":60188,"nodeType":"ImportDirective","src":"107:54:92","nodes":[],"absolutePath":"src/tokamak-contracts/USDC/libraries/Address.sol","file":"../../libraries/Address.sol","nameLocation":"-1:-1:-1","scope":60506,"sourceUnit":60994,"symbolAliases":[{"foreign":{"id":60187,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60993,"src":"116:7:92","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":60190,"nodeType":"ImportDirective","src":"162:55:92","nodes":[],"absolutePath":"src/tokamak-contracts/USDC/L1/libraries/SafeERC20.sol","file":"../libraries/SafeERC20.sol","nameLocation":"-1:-1:-1","scope":60506,"sourceUnit":60073,"symbolAliases":[{"foreign":{"id":60189,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60072,"src":"171:9:92","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":60192,"nodeType":"ImportDirective","src":"219:64:92","nodes":[],"absolutePath":"src/tokamak-contracts/USDC/L1/tokamak-UsdcBridge/L1UsdcBridgeStorage.sol","file":"./L1UsdcBridgeStorage.sol","nameLocation":"-1:-1:-1","scope":60506,"sourceUnit":60699,"symbolAliases":[{"foreign":{"id":60191,"name":"L1UsdcBridgeStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60698,"src":"228:19:92","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":60207,"nodeType":"ContractDefinition","src":"285:210:92","nodes":[{"id":60197,"nodeType":"FunctionDefinition","src":"323:64:92","nodes":[],"functionSelector":"6e296e45","implemented":false,"kind":"function","modifiers":[],"name":"xDomainMessageSender","nameLocation":"332:20:92","parameters":{"id":60193,"nodeType":"ParameterList","parameters":[],"src":"352:2:92"},"returnParameters":{"id":60196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60195,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":60197,"src":"378:7:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60194,"name":"address","nodeType":"ElementaryTypeName","src":"378:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"377:9:92"},"scope":60207,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":60206,"nodeType":"FunctionDefinition","src":"392:101:92","nodes":[],"functionSelector":"3dbb202b","implemented":false,"kind":"function","modifiers":[],"name":"sendMessage","nameLocation":"401:11:92","parameters":{"id":60204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60199,"mutability":"mutable","name":"_target","nameLocation":"421:7:92","nodeType":"VariableDeclaration","scope":60206,"src":"413:15:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60198,"name":"address","nodeType":"ElementaryTypeName","src":"413:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60201,"mutability":"mutable","name":"_message","nameLocation":"445:8:92","nodeType":"VariableDeclaration","scope":60206,"src":"430:23:92","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":60200,"name":"bytes","nodeType":"ElementaryTypeName","src":"430:5:92","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":60203,"mutability":"mutable","name":"_minGasLimit","nameLocation":"462:12:92","nodeType":"VariableDeclaration","scope":60206,"src":"455:19:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":60202,"name":"uint32","nodeType":"ElementaryTypeName","src":"455:6:92","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"412:63:92"},"returnParameters":{"id":60205,"nodeType":"ParameterList","parameters":[],"src":"492:0:92"},"scope":60207,"stateMutability":"payable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"ICrossDomainMessenger","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"linearizedBaseContracts":[60207],"name":"ICrossDomainMessenger","nameLocation":"295:21:92","scope":60506,"usedErrors":[],"usedEvents":[]},{"id":60223,"nodeType":"ContractDefinition","src":"497:236:92","nodes":[{"id":60222,"nodeType":"FunctionDefinition","src":"527:204:92","nodes":[],"functionSelector":"662a633a","implemented":false,"kind":"function","modifiers":[],"name":"finalizeDeposit","nameLocation":"536:15:92","parameters":{"id":60220,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60209,"mutability":"mutable","name":"_l1Token","nameLocation":"569:8:92","nodeType":"VariableDeclaration","scope":60222,"src":"561:16:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60208,"name":"address","nodeType":"ElementaryTypeName","src":"561:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60211,"mutability":"mutable","name":"_l2Token","nameLocation":"595:8:92","nodeType":"VariableDeclaration","scope":60222,"src":"587:16:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60210,"name":"address","nodeType":"ElementaryTypeName","src":"587:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60213,"mutability":"mutable","name":"_from","nameLocation":"621:5:92","nodeType":"VariableDeclaration","scope":60222,"src":"613:13:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60212,"name":"address","nodeType":"ElementaryTypeName","src":"613:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60215,"mutability":"mutable","name":"_to","nameLocation":"644:3:92","nodeType":"VariableDeclaration","scope":60222,"src":"636:11:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60214,"name":"address","nodeType":"ElementaryTypeName","src":"636:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60217,"mutability":"mutable","name":"_amount","nameLocation":"665:7:92","nodeType":"VariableDeclaration","scope":60222,"src":"657:15:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60216,"name":"uint256","nodeType":"ElementaryTypeName","src":"657:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":60219,"mutability":"mutable","name":"_extraData","nameLocation":"697:10:92","nodeType":"VariableDeclaration","scope":60222,"src":"682:25:92","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":60218,"name":"bytes","nodeType":"ElementaryTypeName","src":"682:5:92","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"551:162:92"},"returnParameters":{"id":60221,"nodeType":"ParameterList","parameters":[],"src":"730:0:92"},"scope":60223,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IL2USDCBridge","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"linearizedBaseContracts":[60223],"name":"IL2USDCBridge","nameLocation":"507:13:92","scope":60506,"usedErrors":[],"usedEvents":[]},{"id":60505,"nodeType":"ContractDefinition","src":"735:6954:92","nodes":[{"id":60229,"nodeType":"UsingForDirective","src":"786:27:92","nodes":[],"global":false,"libraryName":{"id":60226,"name":"SafeERC20","nameLocations":["792:9:92"],"nodeType":"IdentifierPath","referencedDeclaration":60072,"src":"792:9:92"},"typeName":{"id":60228,"nodeType":"UserDefinedTypeName","pathNode":{"id":60227,"name":"IERC20","nameLocations":["806:6:92"],"nodeType":"IdentifierPath","referencedDeclaration":59710,"src":"806:6:92"},"referencedDeclaration":59710,"src":"806:6:92","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$59710","typeString":"contract IERC20"}}},{"id":60244,"nodeType":"ModifierDefinition","src":"1129:146:92","nodes":[],"body":{"id":60243,"nodeType":"Block","src":"1148:127:92","nodes":[],"statements":[{"expression":{"arguments":[{"id":60238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1166:31:92","subExpression":{"arguments":[{"expression":{"id":60235,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1186:3:92","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":60236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1190:6:92","memberName":"sender","nodeType":"MemberAccess","src":"1186:10:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":60233,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60993,"src":"1167:7:92","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$60993_$","typeString":"type(library Address)"}},"id":60234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1175:10:92","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":60716,"src":"1167:18:92","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":60237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1167:30:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c792062652063616c6c65642066726f6d20616e20454f41","id":60239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1199:57:92","typeDescriptions":{"typeIdentifier":"t_stringliteral_f81f6db803ded0832643d2e0ed6f9119d9e7648506a58072f4a7195269d8cce8","typeString":"literal_string \"StandardBridge: function can only be called from an EOA\""},"value":"StandardBridge: function can only be called from an EOA"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f81f6db803ded0832643d2e0ed6f9119d9e7648506a58072f4a7195269d8cce8","typeString":"literal_string \"StandardBridge: function can only be called from an EOA\""}],"id":60232,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1158:7:92","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":60240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1158:99:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":60241,"nodeType":"ExpressionStatement","src":"1158:99:92"},{"id":60242,"nodeType":"PlaceholderStatement","src":"1267:1:92"}]},"documentation":{"id":60230,"nodeType":"StructuredDocumentation","src":"818:305:92","text":" @notice Only allow EOAs to call the functions. Note that this is not safe against contracts\n         calling code within their constructors, but also doesn't really matter since we're\n         just trying to prevent users accidentally depositing with smart contract wallets."},"name":"onlyEOA","nameLocation":"1138:7:92","parameters":{"id":60231,"nodeType":"ParameterList","parameters":[],"src":"1145:2:92"},"virtual":false,"visibility":"internal"},{"id":60265,"nodeType":"ModifierDefinition","src":"1384:264:92","nodes":[],"body":{"id":60264,"nodeType":"Block","src":"1411:237:92","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":60259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":60251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":60248,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1442:3:92","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":60249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1446:6:92","memberName":"sender","nodeType":"MemberAccess","src":"1442:10:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":60250,"name":"messenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60997,"src":"1456:9:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1442:23:92","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":60258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":60253,"name":"messenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60997,"src":"1491:9:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":60252,"name":"ICrossDomainMessenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60207,"src":"1469:21:92","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICrossDomainMessenger_$60207_$","typeString":"type(contract ICrossDomainMessenger)"}},"id":60254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1469:32:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$60207","typeString":"contract ICrossDomainMessenger"}},"id":60255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1502:20:92","memberName":"xDomainMessageSender","nodeType":"MemberAccess","referencedDeclaration":60197,"src":"1469:53:92","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":60256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1469:55:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":60257,"name":"otherBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60999,"src":"1528:11:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1469:70:92","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1442:97:92","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c792062652063616c6c65642066726f6d20746865206f7468657220627269646765","id":60260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1553:67:92","typeDescriptions":{"typeIdentifier":"t_stringliteral_cbc7005e6a766806113d4613be79beeb8d602af868fc04e2279ff0ca60009b99","typeString":"literal_string \"StandardBridge: function can only be called from the other bridge\""},"value":"StandardBridge: function can only be called from the other bridge"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cbc7005e6a766806113d4613be79beeb8d602af868fc04e2279ff0ca60009b99","typeString":"literal_string \"StandardBridge: function can only be called from the other bridge\""}],"id":60247,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1421:7:92","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":60261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1421:209:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":60262,"nodeType":"ExpressionStatement","src":"1421:209:92"},{"id":60263,"nodeType":"PlaceholderStatement","src":"1640:1:92"}]},"documentation":{"id":60245,"nodeType":"StructuredDocumentation","src":"1281:98:92","text":" @notice Ensures that the caller is a cross-chain message from the other bridge."},"name":"onlyOtherBridge","nameLocation":"1393:15:92","parameters":{"id":60246,"nodeType":"ParameterList","parameters":[],"src":"1408:2:92"},"virtual":false,"visibility":"internal"},{"id":60269,"nodeType":"FunctionDefinition","src":"1654:17:92","nodes":[],"body":{"id":60268,"nodeType":"Block","src":"1668:3:92","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":60266,"nodeType":"ParameterList","parameters":[],"src":"1665:2:92"},"returnParameters":{"id":60267,"nodeType":"ParameterList","parameters":[],"src":"1668:0:92"},"scope":60505,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":60284,"nodeType":"EventDefinition","src":"2124:199:92","nodes":[],"anonymous":false,"documentation":{"id":60270,"nodeType":"StructuredDocumentation","src":"1677:442:92","text":" @custom:legacy\n @notice Emitted whenever an ERC20 deposit is initiated.\n @param l1Token   Address of the token on L1.\n @param l2Token   Address of the corresponding token on L2.\n @param from      Address of the depositor.\n @param to        Address of the recipient on L2.\n @param amount    Amount of the ERC20 deposited.\n @param extraData Extra data attached to the deposit."},"eventSelector":"718594027abd4eaed59f95162563e0cc6d0e8d5b86b1c7be8b1b0ac3343d0396","name":"ERC20DepositInitiated","nameLocation":"2130:21:92","parameters":{"id":60283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60272,"indexed":true,"mutability":"mutable","name":"l1Token","nameLocation":"2177:7:92","nodeType":"VariableDeclaration","scope":60284,"src":"2161:23:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60271,"name":"address","nodeType":"ElementaryTypeName","src":"2161:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60274,"indexed":true,"mutability":"mutable","name":"l2Token","nameLocation":"2210:7:92","nodeType":"VariableDeclaration","scope":60284,"src":"2194:23:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60273,"name":"address","nodeType":"ElementaryTypeName","src":"2194:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60276,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"2243:4:92","nodeType":"VariableDeclaration","scope":60284,"src":"2227:20:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60275,"name":"address","nodeType":"ElementaryTypeName","src":"2227:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60278,"indexed":false,"mutability":"mutable","name":"to","nameLocation":"2265:2:92","nodeType":"VariableDeclaration","scope":60284,"src":"2257:10:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60277,"name":"address","nodeType":"ElementaryTypeName","src":"2257:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60280,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"2285:6:92","nodeType":"VariableDeclaration","scope":60284,"src":"2277:14:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60279,"name":"uint256","nodeType":"ElementaryTypeName","src":"2277:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":60282,"indexed":false,"mutability":"mutable","name":"extraData","nameLocation":"2307:9:92","nodeType":"VariableDeclaration","scope":60284,"src":"2301:15:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":60281,"name":"bytes","nodeType":"ElementaryTypeName","src":"2301:5:92","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2151:171:92"}},{"id":60299,"nodeType":"EventDefinition","src":"2783:202:92","nodes":[],"anonymous":false,"documentation":{"id":60285,"nodeType":"StructuredDocumentation","src":"2329:449:92","text":" @custom:legacy\n @notice Emitted whenever an ERC20 withdrawal is finalized.\n @param l1Token   Address of the token on L1.\n @param l2Token   Address of the corresponding token on L2.\n @param from      Address of the withdrawer.\n @param to        Address of the recipient on L1.\n @param amount    Amount of the ERC20 withdrawn.\n @param extraData Extra data attached to the withdrawal."},"eventSelector":"3ceee06c1e37648fcbb6ed52e17b3e1f275a1f8c7b22a84b2b84732431e046b3","name":"ERC20WithdrawalFinalized","nameLocation":"2789:24:92","parameters":{"id":60298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60287,"indexed":true,"mutability":"mutable","name":"l1Token","nameLocation":"2839:7:92","nodeType":"VariableDeclaration","scope":60299,"src":"2823:23:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60286,"name":"address","nodeType":"ElementaryTypeName","src":"2823:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60289,"indexed":true,"mutability":"mutable","name":"l2Token","nameLocation":"2872:7:92","nodeType":"VariableDeclaration","scope":60299,"src":"2856:23:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60288,"name":"address","nodeType":"ElementaryTypeName","src":"2856:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60291,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"2905:4:92","nodeType":"VariableDeclaration","scope":60299,"src":"2889:20:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60290,"name":"address","nodeType":"ElementaryTypeName","src":"2889:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60293,"indexed":false,"mutability":"mutable","name":"to","nameLocation":"2927:2:92","nodeType":"VariableDeclaration","scope":60299,"src":"2919:10:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60292,"name":"address","nodeType":"ElementaryTypeName","src":"2919:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60295,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"2947:6:92","nodeType":"VariableDeclaration","scope":60299,"src":"2939:14:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60294,"name":"uint256","nodeType":"ElementaryTypeName","src":"2939:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":60297,"indexed":false,"mutability":"mutable","name":"extraData","nameLocation":"2969:9:92","nodeType":"VariableDeclaration","scope":60299,"src":"2963:15:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":60296,"name":"bytes","nodeType":"ElementaryTypeName","src":"2963:5:92","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2813:171:92"}},{"id":60328,"nodeType":"FunctionDefinition","src":"3644:338:92","nodes":[],"body":{"id":60327,"nodeType":"Block","src":"3865:117:92","nodes":[],"statements":[{"expression":{"arguments":[{"id":60316,"name":"_l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60302,"src":"3897:8:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60317,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60304,"src":"3907:8:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":60318,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3917:3:92","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":60319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3921:6:92","memberName":"sender","nodeType":"MemberAccess","src":"3917:10:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":60320,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3929:3:92","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":60321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3933:6:92","memberName":"sender","nodeType":"MemberAccess","src":"3929:10:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60322,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60306,"src":"3941:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":60323,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60308,"src":"3950:12:92","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":60324,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60310,"src":"3964:10:92","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"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":60315,"name":"_initiateERC20Deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60504,"src":"3875:21:92","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,uint32,bytes calldata)"}},"id":60325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3875:100:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":60326,"nodeType":"ExpressionStatement","src":"3875:100:92"}]},"documentation":{"id":60300,"nodeType":"StructuredDocumentation","src":"2991:648:92","text":" @custom:legacy\n @notice Deposits some amount of ERC20 tokens into the sender's account on L2.\n @param _l1Token     Address of the L1 token being deposited.\n @param _l2Token     Address of the corresponding token on L2.\n @param _amount      Amount of the ERC20 to deposit.\n @param _minGasLimit Minimum gas limit for the deposit message on L2.\n @param _extraData   Optional data to forward to L2. Data supplied here will not be used to\n                     execute any code on L2 and is only emitted as extra data for the\n                     convenience of off-chain tooling."},"functionSelector":"87087623","implemented":true,"kind":"function","modifiers":[{"id":60313,"kind":"modifierInvocation","modifierName":{"id":60312,"name":"onlyEOA","nameLocations":["3853:7:92"],"nodeType":"IdentifierPath","referencedDeclaration":60244,"src":"3853:7:92"},"nodeType":"ModifierInvocation","src":"3853:7:92"}],"name":"bridgeERC20","nameLocation":"3653:11:92","parameters":{"id":60311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60302,"mutability":"mutable","name":"_l1Token","nameLocation":"3682:8:92","nodeType":"VariableDeclaration","scope":60328,"src":"3674:16:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60301,"name":"address","nodeType":"ElementaryTypeName","src":"3674:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60304,"mutability":"mutable","name":"_l2Token","nameLocation":"3708:8:92","nodeType":"VariableDeclaration","scope":60328,"src":"3700:16:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60303,"name":"address","nodeType":"ElementaryTypeName","src":"3700:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60306,"mutability":"mutable","name":"_amount","nameLocation":"3734:7:92","nodeType":"VariableDeclaration","scope":60328,"src":"3726:15:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60305,"name":"uint256","nodeType":"ElementaryTypeName","src":"3726:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":60308,"mutability":"mutable","name":"_minGasLimit","nameLocation":"3758:12:92","nodeType":"VariableDeclaration","scope":60328,"src":"3751:19:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":60307,"name":"uint32","nodeType":"ElementaryTypeName","src":"3751:6:92","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":60310,"mutability":"mutable","name":"_extraData","nameLocation":"3795:10:92","nodeType":"VariableDeclaration","scope":60328,"src":"3780:25:92","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":60309,"name":"bytes","nodeType":"ElementaryTypeName","src":"3780:5:92","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3664:147:92"},"returnParameters":{"id":60314,"nodeType":"ParameterList","parameters":[],"src":"3865:0:92"},"scope":60505,"stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"id":60356,"nodeType":"FunctionDefinition","src":"4696:338:92","nodes":[],"body":{"id":60355,"nodeType":"Block","src":"4924:110:92","nodes":[],"statements":[{"expression":{"arguments":[{"id":60345,"name":"_l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60331,"src":"4956:8:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60346,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60333,"src":"4966:8:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":60347,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4976:3:92","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":60348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4980:6:92","memberName":"sender","nodeType":"MemberAccess","src":"4976:10:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60349,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60335,"src":"4988:3:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60350,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60337,"src":"4993:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":60351,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60339,"src":"5002:12:92","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":60352,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60341,"src":"5016:10:92","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"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":60344,"name":"_initiateERC20Deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60504,"src":"4934:21:92","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,uint32,bytes calldata)"}},"id":60353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4934:93:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":60354,"nodeType":"ExpressionStatement","src":"4934:93:92"}]},"documentation":{"id":60329,"nodeType":"StructuredDocumentation","src":"3988:703:92","text":" @custom:legacy\n @notice Deposits some amount of ERC20 tokens into a target account on L2.\n @param _l1Token     Address of the L1 token being deposited.\n @param _l2Token     Address of the corresponding token on L2.\n @param _to          Address of the recipient on L2.\n @param _amount      Amount of the ERC20 to deposit.\n @param _minGasLimit Minimum gas limit for the deposit message on L2.\n @param _extraData   Optional data to forward to L2. Data supplied here will not be used to\n                     execute any code on L2 and is only emitted as extra data for the\n                     convenience of off-chain tooling."},"functionSelector":"540abf73","implemented":true,"kind":"function","modifiers":[],"name":"bridgeERC20To","nameLocation":"4705:13:92","parameters":{"id":60342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60331,"mutability":"mutable","name":"_l1Token","nameLocation":"4736:8:92","nodeType":"VariableDeclaration","scope":60356,"src":"4728:16:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60330,"name":"address","nodeType":"ElementaryTypeName","src":"4728:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60333,"mutability":"mutable","name":"_l2Token","nameLocation":"4762:8:92","nodeType":"VariableDeclaration","scope":60356,"src":"4754:16:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60332,"name":"address","nodeType":"ElementaryTypeName","src":"4754:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60335,"mutability":"mutable","name":"_to","nameLocation":"4788:3:92","nodeType":"VariableDeclaration","scope":60356,"src":"4780:11:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60334,"name":"address","nodeType":"ElementaryTypeName","src":"4780:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60337,"mutability":"mutable","name":"_amount","nameLocation":"4809:7:92","nodeType":"VariableDeclaration","scope":60356,"src":"4801:15:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60336,"name":"uint256","nodeType":"ElementaryTypeName","src":"4801:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":60339,"mutability":"mutable","name":"_minGasLimit","nameLocation":"4833:12:92","nodeType":"VariableDeclaration","scope":60356,"src":"4826:19:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":60338,"name":"uint32","nodeType":"ElementaryTypeName","src":"4826:6:92","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":60341,"mutability":"mutable","name":"_extraData","nameLocation":"4870:10:92","nodeType":"VariableDeclaration","scope":60356,"src":"4855:25:92","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":60340,"name":"bytes","nodeType":"ElementaryTypeName","src":"4855:5:92","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4718:168:92"},"returnParameters":{"id":60343,"nodeType":"ParameterList","parameters":[],"src":"4924:0:92"},"scope":60505,"stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"id":60412,"nodeType":"FunctionDefinition","src":"5499:529:92","nodes":[],"body":{"id":60411,"nodeType":"Block","src":"5797:231:92","nodes":[],"statements":[{"expression":{"id":60392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":60380,"name":"deposits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60697,"src":"5807:8:92","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":60383,"indexExpression":{"id":60381,"name":"_l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60359,"src":"5816:8:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5807:18:92","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":60384,"indexExpression":{"id":60382,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60361,"src":"5826:8:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5807:28:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":60391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":60385,"name":"deposits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60697,"src":"5838:8:92","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":60387,"indexExpression":{"id":60386,"name":"_l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60359,"src":"5847:8:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5838:18:92","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":60389,"indexExpression":{"id":60388,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60361,"src":"5857:8:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5838:28:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":60390,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60367,"src":"5869:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5838:38:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5807:69:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":60393,"nodeType":"ExpressionStatement","src":"5807:69:92"},{"expression":{"arguments":[{"id":60398,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60365,"src":"5916:3:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60399,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60367,"src":"5921:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":60395,"name":"_l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60359,"src":"5893:8:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":60394,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59710,"src":"5886:6:92","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$59710_$","typeString":"type(contract IERC20)"}},"id":60396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5886:16:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$59710","typeString":"contract IERC20"}},"id":60397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5903:12:92","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":59832,"src":"5886:29:92","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$59710_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$59710_$","typeString":"function (contract IERC20,address,uint256)"}},"id":60400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5886:43:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":60401,"nodeType":"ExpressionStatement","src":"5886:43:92"},{"eventCall":{"arguments":[{"id":60403,"name":"_l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60359,"src":"5969:8:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60404,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60361,"src":"5979:8:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60405,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60363,"src":"5989:5:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60406,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60365,"src":"5996:3:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60407,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60367,"src":"6001:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":60408,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60369,"src":"6010:10:92","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":60402,"name":"ERC20WithdrawalFinalized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60299,"src":"5944:24:92","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes memory)"}},"id":60409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5944:77:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":60410,"nodeType":"EmitStatement","src":"5939:82:92"}]},"documentation":{"id":60357,"nodeType":"StructuredDocumentation","src":"5040:454:92","text":" @custom:legacy\n @notice Finalizes a withdrawal of ERC20 tokens from L2.\n @param _l1Token   Address of the token on L1.\n @param _l2Token   Address of the corresponding token on L2.\n @param _from      Address of the withdrawer on L2.\n @param _to        Address of the recipient on L1.\n @param _amount    Amount of the ERC20 to withdraw.\n @param _extraData Optional data forwarded from L2."},"functionSelector":"a9f9e675","implemented":true,"kind":"function","modifiers":[{"id":60372,"kind":"modifierInvocation","modifierName":{"id":60371,"name":"onlyOtherBridge","nameLocations":["5719:15:92"],"nodeType":"IdentifierPath","referencedDeclaration":60265,"src":"5719:15:92"},"nodeType":"ModifierInvocation","src":"5719:15:92"},{"arguments":[{"id":60374,"name":"_l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60359,"src":"5754:8:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":60375,"kind":"modifierInvocation","modifierName":{"id":60373,"name":"onlyL1Usdc","nameLocations":["5743:10:92"],"nodeType":"IdentifierPath","referencedDeclaration":61016,"src":"5743:10:92"},"nodeType":"ModifierInvocation","src":"5743:20:92"},{"arguments":[{"id":60377,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60361,"src":"5783:8:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":60378,"kind":"modifierInvocation","modifierName":{"id":60376,"name":"onlyL2Usdc","nameLocations":["5772:10:92"],"nodeType":"IdentifierPath","referencedDeclaration":61029,"src":"5772:10:92"},"nodeType":"ModifierInvocation","src":"5772:20:92"}],"name":"finalizeERC20Withdrawal","nameLocation":"5508:23:92","parameters":{"id":60370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60359,"mutability":"mutable","name":"_l1Token","nameLocation":"5549:8:92","nodeType":"VariableDeclaration","scope":60412,"src":"5541:16:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60358,"name":"address","nodeType":"ElementaryTypeName","src":"5541:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60361,"mutability":"mutable","name":"_l2Token","nameLocation":"5575:8:92","nodeType":"VariableDeclaration","scope":60412,"src":"5567:16:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60360,"name":"address","nodeType":"ElementaryTypeName","src":"5567:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60363,"mutability":"mutable","name":"_from","nameLocation":"5601:5:92","nodeType":"VariableDeclaration","scope":60412,"src":"5593:13:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60362,"name":"address","nodeType":"ElementaryTypeName","src":"5593:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60365,"mutability":"mutable","name":"_to","nameLocation":"5624:3:92","nodeType":"VariableDeclaration","scope":60412,"src":"5616:11:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60364,"name":"address","nodeType":"ElementaryTypeName","src":"5616:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60367,"mutability":"mutable","name":"_amount","nameLocation":"5645:7:92","nodeType":"VariableDeclaration","scope":60412,"src":"5637:15:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60366,"name":"uint256","nodeType":"ElementaryTypeName","src":"5637:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":60369,"mutability":"mutable","name":"_extraData","nameLocation":"5677:10:92","nodeType":"VariableDeclaration","scope":60412,"src":"5662:25:92","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":60368,"name":"bytes","nodeType":"ElementaryTypeName","src":"5662:5:92","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5531:162:92"},"returnParameters":{"id":60379,"nodeType":"ParameterList","parameters":[],"src":"5797:0:92"},"scope":60505,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":60424,"nodeType":"FunctionDefinition","src":"6220:101:92","nodes":[],"body":{"id":60423,"nodeType":"Block","src":"6277:44:92","nodes":[],"statements":[{"expression":{"arguments":[{"id":60420,"name":"otherBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60999,"src":"6302:11:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":60419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6294:7:92","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":60418,"name":"address","nodeType":"ElementaryTypeName","src":"6294:7:92","typeDescriptions":{}}},"id":60421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6294:20:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":60417,"id":60422,"nodeType":"Return","src":"6287:27:92"}]},"documentation":{"id":60413,"nodeType":"StructuredDocumentation","src":"6034:181:92","text":" @custom:legacy\n @notice Retrieves the access of the corresponding L2 bridge contract.\n @return Address of the corresponding L2 bridge contract."},"functionSelector":"91c49bf8","implemented":true,"kind":"function","modifiers":[],"name":"l2TokenBridge","nameLocation":"6229:13:92","parameters":{"id":60414,"nodeType":"ParameterList","parameters":[],"src":"6242:2:92"},"returnParameters":{"id":60417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":60424,"src":"6268:7:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60415,"name":"address","nodeType":"ElementaryTypeName","src":"6268:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6267:9:92"},"scope":60505,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":60504,"nodeType":"FunctionDefinition","src":"6862:825:92","nodes":[],"body":{"id":60503,"nodeType":"Block","src":"7163:524:92","nodes":[],"statements":[{"expression":{"arguments":[{"id":60452,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60431,"src":"7207:5:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":60455,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7222:4:92","typeDescriptions":{"typeIdentifier":"t_contract$_L1UsdcBridge_$60505","typeString":"contract L1UsdcBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_L1UsdcBridge_$60505","typeString":"contract L1UsdcBridge"}],"id":60454,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7214:7:92","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":60453,"name":"address","nodeType":"ElementaryTypeName","src":"7214:7:92","typeDescriptions":{}}},"id":60456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7214:13:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60457,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60435,"src":"7229:7:92","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":60449,"name":"_l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60427,"src":"7180:8:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":60448,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59710,"src":"7173:6:92","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$59710_$","typeString":"type(contract IERC20)"}},"id":60450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7173:16:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$59710","typeString":"contract IERC20"}},"id":60451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7190:16:92","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":59859,"src":"7173:33:92","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$59710_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$59710_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":60458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7173:64:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":60459,"nodeType":"ExpressionStatement","src":"7173:64:92"},{"expression":{"id":60472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":60460,"name":"deposits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60697,"src":"7247:8:92","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":60463,"indexExpression":{"id":60461,"name":"_l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60427,"src":"7256:8:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7247:18:92","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":60464,"indexExpression":{"id":60462,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60429,"src":"7266:8:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7247:28:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":60471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":60465,"name":"deposits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60697,"src":"7278:8:92","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":60467,"indexExpression":{"id":60466,"name":"_l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60427,"src":"7287:8:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7278:18:92","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":60469,"indexExpression":{"id":60468,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60429,"src":"7297:8:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7278:28:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":60470,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60435,"src":"7309:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7278:38:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7247:69:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":60473,"nodeType":"ExpressionStatement","src":"7247:69:92"},{"expression":{"arguments":[{"id":60478,"name":"otherBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60999,"src":"7385:11:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":60481,"name":"IL2USDCBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60223,"src":"7450:13:92","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IL2USDCBridge_$60223_$","typeString":"type(contract IL2USDCBridge)"}},"id":60482,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7464:15:92","memberName":"finalizeDeposit","nodeType":"MemberAccess","referencedDeclaration":60222,"src":"7450:29:92","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function IL2USDCBridge.finalizeDeposit(address,address,address,address,uint256,bytes calldata)"}},"id":60483,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7480:8:92","memberName":"selector","nodeType":"MemberAccess","src":"7450:38:92","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":60484,"name":"_l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60427,"src":"7490:8:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60485,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60429,"src":"7500:8:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60486,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60431,"src":"7510:5:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60487,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60433,"src":"7517:3:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60488,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60435,"src":"7522:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":60489,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60439,"src":"7531:10:92","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":60479,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7410:3:92","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":60480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7414:18:92","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"7410:22:92","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":60490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7410:145:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":60491,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60437,"src":"7569:12:92","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"arguments":[{"id":60475,"name":"messenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60997,"src":"7349:9:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":60474,"name":"ICrossDomainMessenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60207,"src":"7327:21:92","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICrossDomainMessenger_$60207_$","typeString":"type(contract ICrossDomainMessenger)"}},"id":60476,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7327:32:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$60207","typeString":"contract ICrossDomainMessenger"}},"id":60477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7360:11:92","memberName":"sendMessage","nodeType":"MemberAccess","referencedDeclaration":60206,"src":"7327:44:92","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$_t_uint32_$returns$__$","typeString":"function (address,bytes memory,uint32) payable external"}},"id":60492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7327:264:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":60493,"nodeType":"ExpressionStatement","src":"7327:264:92"},{"eventCall":{"arguments":[{"id":60495,"name":"_l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60427,"src":"7628:8:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60496,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60429,"src":"7638:8:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60497,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60431,"src":"7648:5:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60498,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60433,"src":"7655:3:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60499,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60435,"src":"7660:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":60500,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60439,"src":"7669:10:92","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":60494,"name":"ERC20DepositInitiated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60284,"src":"7606:21:92","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes memory)"}},"id":60501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7606:74:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":60502,"nodeType":"EmitStatement","src":"7601:79:92"}]},"documentation":{"id":60425,"nodeType":"StructuredDocumentation","src":"6327:530:92","text":" @notice Internal function for initiating an ERC20 deposit.\n @param _l1Token     Address of the L1 token being deposited.\n @param _l2Token     Address of the corresponding token on L2.\n @param _from        Address of the sender on L1.\n @param _to          Address of the recipient on L2.\n @param _amount      Amount of the ERC20 to deposit.\n @param _minGasLimit Minimum gas limit for the deposit message on L2.\n @param _extraData   Optional data to forward to L2."},"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":60442,"name":"_l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60427,"src":"7120:8:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":60443,"kind":"modifierInvocation","modifierName":{"id":60441,"name":"onlyL1Usdc","nameLocations":["7109:10:92"],"nodeType":"IdentifierPath","referencedDeclaration":61016,"src":"7109:10:92"},"nodeType":"ModifierInvocation","src":"7109:20:92"},{"arguments":[{"id":60445,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60429,"src":"7149:8:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":60446,"kind":"modifierInvocation","modifierName":{"id":60444,"name":"onlyL2Usdc","nameLocations":["7138:10:92"],"nodeType":"IdentifierPath","referencedDeclaration":61029,"src":"7138:10:92"},"nodeType":"ModifierInvocation","src":"7138:20:92"}],"name":"_initiateERC20Deposit","nameLocation":"6871:21:92","parameters":{"id":60440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60427,"mutability":"mutable","name":"_l1Token","nameLocation":"6910:8:92","nodeType":"VariableDeclaration","scope":60504,"src":"6902:16:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60426,"name":"address","nodeType":"ElementaryTypeName","src":"6902:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60429,"mutability":"mutable","name":"_l2Token","nameLocation":"6936:8:92","nodeType":"VariableDeclaration","scope":60504,"src":"6928:16:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60428,"name":"address","nodeType":"ElementaryTypeName","src":"6928:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60431,"mutability":"mutable","name":"_from","nameLocation":"6962:5:92","nodeType":"VariableDeclaration","scope":60504,"src":"6954:13:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60430,"name":"address","nodeType":"ElementaryTypeName","src":"6954:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60433,"mutability":"mutable","name":"_to","nameLocation":"6985:3:92","nodeType":"VariableDeclaration","scope":60504,"src":"6977:11:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60432,"name":"address","nodeType":"ElementaryTypeName","src":"6977:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60435,"mutability":"mutable","name":"_amount","nameLocation":"7006:7:92","nodeType":"VariableDeclaration","scope":60504,"src":"6998:15:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60434,"name":"uint256","nodeType":"ElementaryTypeName","src":"6998:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":60437,"mutability":"mutable","name":"_minGasLimit","nameLocation":"7030:12:92","nodeType":"VariableDeclaration","scope":60504,"src":"7023:19:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":60436,"name":"uint32","nodeType":"ElementaryTypeName","src":"7023:6:92","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":60439,"mutability":"mutable","name":"_extraData","nameLocation":"7067:10:92","nodeType":"VariableDeclaration","scope":60504,"src":"7052:25:92","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":60438,"name":"bytes","nodeType":"ElementaryTypeName","src":"7052:5:92","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6892:191:92"},"returnParameters":{"id":60447,"nodeType":"ParameterList","parameters":[],"src":"7163:0:92"},"scope":60505,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":60224,"name":"L1UsdcBridgeStorage","nameLocations":["760:19:92"],"nodeType":"IdentifierPath","referencedDeclaration":60698,"src":"760:19:92"},"id":60225,"nodeType":"InheritanceSpecifier","src":"760:19:92"}],"canonicalName":"L1UsdcBridge","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[60505,60698,61030],"name":"L1UsdcBridge","nameLocation":"744:12:92","scope":60506,"usedErrors":[59036,59041,59044,59799],"usedEvents":[60284,60299]}],"license":"MIT"},"id":92}