{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"CHALLENGER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"FINALIZATION_PERIOD_SECONDS","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"L2_BLOCK_TIME","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"PROPOSER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"SUBMISSION_INTERVAL","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"challenger","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"computeL2Timestamp","inputs":[{"name":"_l2BlockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"deleteL2Outputs","inputs":[{"name":"_l2OutputIndex","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"finalizationPeriodSeconds","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getL2Output","inputs":[{"name":"_l2OutputIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OutputProposal","components":[{"name":"outputRoot","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint128","internalType":"uint128"},{"name":"l2BlockNumber","type":"uint128","internalType":"uint128"}]}],"stateMutability":"view"},{"type":"function","name":"getL2OutputAfter","inputs":[{"name":"_l2BlockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OutputProposal","components":[{"name":"outputRoot","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint128","internalType":"uint128"},{"name":"l2BlockNumber","type":"uint128","internalType":"uint128"}]}],"stateMutability":"view"},{"type":"function","name":"getL2OutputIndexAfter","inputs":[{"name":"_l2BlockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_submissionInterval","type":"uint256","internalType":"uint256"},{"name":"_l2BlockTime","type":"uint256","internalType":"uint256"},{"name":"_startingBlockNumber","type":"uint256","internalType":"uint256"},{"name":"_startingTimestamp","type":"uint256","internalType":"uint256"},{"name":"_proposer","type":"address","internalType":"address"},{"name":"_challenger","type":"address","internalType":"address"},{"name":"_finalizationPeriodSeconds","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"l2BlockTime","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"latestBlockNumber","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"latestOutputIndex","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"nextBlockNumber","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"nextOutputIndex","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"proposeL2Output","inputs":[{"name":"_outputRoot","type":"bytes32","internalType":"bytes32"},{"name":"_l2BlockNumber","type":"uint256","internalType":"uint256"},{"name":"_l1BlockHash","type":"bytes32","internalType":"bytes32"},{"name":"_l1BlockNumber","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"proposer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"startingBlockNumber","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"startingTimestamp","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"submissionInterval","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"OutputProposed","inputs":[{"name":"outputRoot","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"l2OutputIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"l2BlockNumber","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"l1Timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OutputsDeleted","inputs":[{"name":"prevNextOutputIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"newNextOutputIndex","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b50620000256001806000808080806200002b565b62000328565b600054610100900460ff16158080156200004c5750600054600160ff909116105b806200007c575062000069306200031960201b6200135d1760201c565b1580156200007c575060005460ff166001145b620000e55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000109576000805461ff0019166101001790555b60008811620001815760405162461bcd60e51b815260206004820152603a60248201527f4c324f75747075744f7261636c653a207375626d697373696f6e20696e74657260448201527f76616c206d7573742062652067726561746572207468616e20300000000000006064820152608401620000dc565b60008711620001f95760405162461bcd60e51b815260206004820152603460248201527f4c324f75747075744f7261636c653a204c3220626c6f636b2074696d65206d7560448201527f73742062652067726561746572207468616e20300000000000000000000000006064820152608401620000dc565b428511156200027f5760405162461bcd60e51b8152602060048201526044602482018190527f4c324f75747075744f7261636c653a207374617274696e67204c322074696d65908201527f7374616d70206d757374206265206c657373207468616e2063757272656e742060648201526374696d6560e01b608482015260a401620000dc565b6004889055600587905560018690556002859055600780546001600160a01b038087166001600160a01b0319928316179092556006805492861692909116919091179055600882905580156200030f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b6001600160a01b03163b151590565b6115d580620003386000396000f3fe60806040526004361061018a5760003560e01c806389c44cbb116100d6578063ce5db8d61161007f578063dcec334811610059578063dcec33481461049b578063e1a41bcf146104b0578063f4daa291146104c657600080fd5b8063ce5db8d614610445578063cf8e5cf01461045b578063d1de856c1461047b57600080fd5b8063a25ae557116100b0578063a25ae55714610391578063a8e4fb90146103ed578063bffa7f0f1461041a57600080fd5b806389c44cbb1461034857806393991af3146103685780639aaab6481461037e57600080fd5b806369f16eec1161013857806370872aa51161011257806370872aa5146102fc5780637f00642014610312578063887862721461033257600080fd5b806369f16eec146102a75780636abcf563146102bc5780636b4d98dd146102d157600080fd5b8063529933df11610169578063529933df146101ea578063534db0e2146101ff57806354fd4d501461025157600080fd5b80622134cc1461018f5780631c89c97d146101b35780634599c788146101d5575b600080fd5b34801561019b57600080fd5b506005545b6040519081526020015b60405180910390f35b3480156101bf57600080fd5b506101d36101ce3660046113a2565b6104db565b005b3480156101e157600080fd5b506101a06108b6565b3480156101f657600080fd5b506004546101a0565b34801561020b57600080fd5b5060065461022c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101aa565b34801561025d57600080fd5b5061029a6040518060400160405280600581526020017f312e382e3000000000000000000000000000000000000000000000000000000081525081565b6040516101aa9190611405565b3480156102b357600080fd5b506101a0610929565b3480156102c857600080fd5b506003546101a0565b3480156102dd57600080fd5b5060065473ffffffffffffffffffffffffffffffffffffffff1661022c565b34801561030857600080fd5b506101a060015481565b34801561031e57600080fd5b506101a061032d366004611478565b61093b565b34801561033e57600080fd5b506101a060025481565b34801561035457600080fd5b506101d3610363366004611478565b610b4f565b34801561037457600080fd5b506101a060055481565b6101d361038c366004611491565b610de9565b34801561039d57600080fd5b506103b16103ac366004611478565b61124a565b60408051825181526020808401516fffffffffffffffffffffffffffffffff9081169183019190915292820151909216908201526060016101aa565b3480156103f957600080fd5b5060075461022c9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561042657600080fd5b5060075473ffffffffffffffffffffffffffffffffffffffff1661022c565b34801561045157600080fd5b506101a060085481565b34801561046757600080fd5b506103b1610476366004611478565b6112de565b34801561048757600080fd5b506101a0610496366004611478565b611316565b3480156104a757600080fd5b506101a0611346565b3480156104bc57600080fd5b506101a060045481565b3480156104d257600080fd5b506008546101a0565b600054610100900460ff16158080156104fb5750600054600160ff909116105b806105155750303b158015610515575060005460ff166001145b6105a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561060457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b60008811610694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4c324f75747075744f7261636c653a207375626d697373696f6e20696e74657260448201527f76616c206d7573742062652067726561746572207468616e2030000000000000606482015260840161059d565b60008711610724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4c324f75747075744f7261636c653a204c3220626c6f636b2074696d65206d7560448201527f73742062652067726561746572207468616e2030000000000000000000000000606482015260840161059d565b428511156107db576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526044602482018190527f4c324f75747075744f7261636c653a207374617274696e67204c322074696d65908201527f7374616d70206d757374206265206c657373207468616e2063757272656e742060648201527f74696d6500000000000000000000000000000000000000000000000000000000608482015260a40161059d565b60048890556005879055600186905560028590556007805473ffffffffffffffffffffffffffffffffffffffff8087167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556006805492861692909116919091179055600882905580156108ac57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b6003546000901561092057600380546108d1906001906114f2565b815481106108e1576108e1611509565b600091825260209091206002909102016001015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16919050565b6001545b905090565b600354600090610924906001906114f2565b60006109456108b6565b8211156109fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f4c324f75747075744f7261636c653a2063616e6e6f7420676574206f7574707560448201527f7420666f72206120626c6f636b207468617420686173206e6f74206265656e2060648201527f70726f706f736564000000000000000000000000000000000000000000000000608482015260a40161059d565b600354610aaf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604660248201527f4c324f75747075744f7261636c653a2063616e6e6f7420676574206f7574707560448201527f74206173206e6f206f7574707574732068617665206265656e2070726f706f7360648201527f6564207965740000000000000000000000000000000000000000000000000000608482015260a40161059d565b6003546000905b80821015610b485760006002610acc8385611538565b610ad69190611550565b90508460038281548110610aec57610aec611509565b600091825260209091206002909102016001015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff161015610b3e57610b37816001611538565b9250610b42565b8091505b50610ab6565b5092915050565b60065473ffffffffffffffffffffffffffffffffffffffff163314610bf6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4c324f75747075744f7261636c653a206f6e6c7920746865206368616c6c656e60448201527f67657220616464726573732063616e2064656c657465206f7574707574730000606482015260840161059d565b6003548110610cad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f4c324f75747075744f7261636c653a2063616e6e6f742064656c657465206f7560448201527f747075747320616674657220746865206c6174657374206f757470757420696e60648201527f6465780000000000000000000000000000000000000000000000000000000000608482015260a40161059d565b60085460038281548110610cc357610cc3611509565b6000918252602090912060016002909202010154610cf3906fffffffffffffffffffffffffffffffff16426114f2565b10610da6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604660248201527f4c324f75747075744f7261636c653a2063616e6e6f742064656c657465206f7560448201527f74707574732074686174206861766520616c7265616479206265656e2066696e60648201527f616c697a65640000000000000000000000000000000000000000000000000000608482015260a40161059d565b6000610db160035490565b90508160035581817f4ee37ac2c786ec85e87592d3c5c8a1dd66f8496dda3f125d9ea8ca5f657629b660405160405180910390a35050565b60075473ffffffffffffffffffffffffffffffffffffffff163314610eb6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f4c324f75747075744f7261636c653a206f6e6c79207468652070726f706f736560448201527f7220616464726573732063616e2070726f706f7365206e6577206f757470757460648201527f7300000000000000000000000000000000000000000000000000000000000000608482015260a40161059d565b610ebe611346565b8314610f72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f4c324f75747075744f7261636c653a20626c6f636b206e756d626572206d757360448201527f7420626520657175616c20746f206e65787420657870656374656420626c6f6360648201527f6b206e756d626572000000000000000000000000000000000000000000000000608482015260a40161059d565b42610f7c84611316565b10611009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4c324f75747075744f7261636c653a2063616e6e6f742070726f706f7365204c60448201527f32206f757470757420696e207468652066757475726500000000000000000000606482015260840161059d565b83611096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4c324f75747075744f7261636c653a204c32206f75747075742070726f706f7360448201527f616c2063616e6e6f7420626520746865207a65726f2068617368000000000000606482015260840161059d565b81156111525781814014611152576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f4c324f75747075744f7261636c653a20626c6f636b206861736820646f65732060448201527f6e6f74206d61746368207468652068617368206174207468652065787065637460648201527f6564206865696768740000000000000000000000000000000000000000000000608482015260a40161059d565b8261115c60035490565b857fa7aaf2512769da4e444e3de247be2564225c2e7a8f74cfe528e46e17d24868e24260405161118e91815260200190565b60405180910390a45050604080516060810182529283526fffffffffffffffffffffffffffffffff4281166020850190815292811691840191825260038054600181018255600091909152935160029094027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b810194909455915190518216700100000000000000000000000000000000029116177fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c90910155565b60408051606081018252600080825260208201819052918101919091526003828154811061127a5761127a611509565b600091825260209182902060408051606081018252600290930290910180548352600101546fffffffffffffffffffffffffffffffff8082169484019490945270010000000000000000000000000000000090049092169181019190915292915050565b604080516060810182526000808252602082018190529181019190915260036113068361093b565b8154811061127a5761127a611509565b60006005546001548361132991906114f2565b611333919061158b565b6002546113409190611538565b92915050565b60006004546113536108b6565b6109249190611538565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b803573ffffffffffffffffffffffffffffffffffffffff8116811461139d57600080fd5b919050565b600080600080600080600060e0888a0312156113bd57600080fd5b873596506020880135955060408801359450606088013593506113e260808901611379565b92506113f060a08901611379565b915060c0880135905092959891949750929550565b600060208083528351808285015260005b8181101561143257858101830151858201604001528201611416565b81811115611444576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60006020828403121561148a57600080fd5b5035919050565b600080600080608085870312156114a757600080fd5b5050823594602084013594506040840135936060013592509050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611504576115046114c3565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000821982111561154b5761154b6114c3565b500190565b600082611586577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156115c3576115c36114c3565b50029056fea164736f6c634300080f000a","sourceMap":"611:13425:133:-:0;;;2792:305;;;;;;;;;-1:-1:-1;2816:274:133;2862:1;;2928;;;;;2816:10;:274::i;:::-;611:13425;;3742:985;3100:19:43;3123:13;;;;;;3122:14;;3168:34;;;;-1:-1:-1;3186:12:43;;3201:1;3186:12;;;;:16;3168:34;3167:97;;;;3209:33;3236:4;3209:18;;;;;:33;;:::i;:::-;3208:34;:55;;;;-1:-1:-1;3246:12:43;;;;;:17;3208:55;3146:190;;;;-1:-1:-1;;;3146:190:43;;216:2:357;3146:190:43;;;198:21:357;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:357;;;338:44;399:19;;3146:190:43;;;;;;;;;3346:12;:16;;-1:-1:-1;;3346:16:43;3361:1;3346:16;;;3372:65;;;;3406:13;:20;;-1:-1:-1;;3406:20:43;;;;;3372:65;4088:1:133::1;4066:19;:23;4058:94;;;::::0;-1:-1:-1;;;4058:94:133;;631:2:357;4058:94:133::1;::::0;::::1;613:21:357::0;670:2;650:18;;;643:30;709:34;689:18;;;682:62;780:28;760:18;;;753:56;826:19;;4058:94:133::1;429:422:357::0;4058:94:133::1;4185:1;4170:12;:16;4162:81;;;::::0;-1:-1:-1;;;4162:81:133;;1058:2:357;4162:81:133::1;::::0;::::1;1040:21:357::0;1097:2;1077:18;;;1070:30;1136:34;1116:18;;;1109:62;1207:22;1187:18;;;1180:50;1247:19;;4162:81:133::1;856:416:357::0;4162:81:133::1;4296:15;4274:18;:37;;4253:152;;;::::0;-1:-1:-1;;;4253:152:133;;1479:2:357;4253:152:133::1;::::0;::::1;1461:21:357::0;1518:2;1498:18;;;1491:30;;;1557:34;1537:18;;;1530:62;1628:34;1608:18;;;1601:62;-1:-1:-1;;;1679:19:357;;;1672:35;1724:19;;4253:152:133::1;1277:472:357::0;4253:152:133::1;4416:18;:40:::0;;;4466:11:::1;:26:::0;;;4502:19:::1;:42:::0;;;4554:17:::1;:38:::0;;;4602:8:::1;:20:::0;;-1:-1:-1;;;;;4602:20:133;;::::1;-1:-1:-1::0;;;;;;4602:20:133;;::::1;;::::0;;;4632:10:::1;:24:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;4666:25:::1;:54:::0;;;3457:99:43;;;;3507:5;3491:21;;-1:-1:-1;;3491:21:43;;;3531:14;;-1:-1:-1;1906:36:357;;3531:14:43;;1894:2:357;1879:18;3531:14:43;;;;;;;3457:99;3090:472;3742:985:133;;;;;;;:::o;1175:320:59:-;-1:-1:-1;;;;;1465:19:59;;:23;;;1175:320::o;1754:194:357:-;611:13425:133;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061018a5760003560e01c806389c44cbb116100d6578063ce5db8d61161007f578063dcec334811610059578063dcec33481461049b578063e1a41bcf146104b0578063f4daa291146104c657600080fd5b8063ce5db8d614610445578063cf8e5cf01461045b578063d1de856c1461047b57600080fd5b8063a25ae557116100b0578063a25ae55714610391578063a8e4fb90146103ed578063bffa7f0f1461041a57600080fd5b806389c44cbb1461034857806393991af3146103685780639aaab6481461037e57600080fd5b806369f16eec1161013857806370872aa51161011257806370872aa5146102fc5780637f00642014610312578063887862721461033257600080fd5b806369f16eec146102a75780636abcf563146102bc5780636b4d98dd146102d157600080fd5b8063529933df11610169578063529933df146101ea578063534db0e2146101ff57806354fd4d501461025157600080fd5b80622134cc1461018f5780631c89c97d146101b35780634599c788146101d5575b600080fd5b34801561019b57600080fd5b506005545b6040519081526020015b60405180910390f35b3480156101bf57600080fd5b506101d36101ce3660046113a2565b6104db565b005b3480156101e157600080fd5b506101a06108b6565b3480156101f657600080fd5b506004546101a0565b34801561020b57600080fd5b5060065461022c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101aa565b34801561025d57600080fd5b5061029a6040518060400160405280600581526020017f312e382e3000000000000000000000000000000000000000000000000000000081525081565b6040516101aa9190611405565b3480156102b357600080fd5b506101a0610929565b3480156102c857600080fd5b506003546101a0565b3480156102dd57600080fd5b5060065473ffffffffffffffffffffffffffffffffffffffff1661022c565b34801561030857600080fd5b506101a060015481565b34801561031e57600080fd5b506101a061032d366004611478565b61093b565b34801561033e57600080fd5b506101a060025481565b34801561035457600080fd5b506101d3610363366004611478565b610b4f565b34801561037457600080fd5b506101a060055481565b6101d361038c366004611491565b610de9565b34801561039d57600080fd5b506103b16103ac366004611478565b61124a565b60408051825181526020808401516fffffffffffffffffffffffffffffffff9081169183019190915292820151909216908201526060016101aa565b3480156103f957600080fd5b5060075461022c9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561042657600080fd5b5060075473ffffffffffffffffffffffffffffffffffffffff1661022c565b34801561045157600080fd5b506101a060085481565b34801561046757600080fd5b506103b1610476366004611478565b6112de565b34801561048757600080fd5b506101a0610496366004611478565b611316565b3480156104a757600080fd5b506101a0611346565b3480156104bc57600080fd5b506101a060045481565b3480156104d257600080fd5b506008546101a0565b600054610100900460ff16158080156104fb5750600054600160ff909116105b806105155750303b158015610515575060005460ff166001145b6105a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561060457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b60008811610694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4c324f75747075744f7261636c653a207375626d697373696f6e20696e74657260448201527f76616c206d7573742062652067726561746572207468616e2030000000000000606482015260840161059d565b60008711610724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4c324f75747075744f7261636c653a204c3220626c6f636b2074696d65206d7560448201527f73742062652067726561746572207468616e2030000000000000000000000000606482015260840161059d565b428511156107db576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526044602482018190527f4c324f75747075744f7261636c653a207374617274696e67204c322074696d65908201527f7374616d70206d757374206265206c657373207468616e2063757272656e742060648201527f74696d6500000000000000000000000000000000000000000000000000000000608482015260a40161059d565b60048890556005879055600186905560028590556007805473ffffffffffffffffffffffffffffffffffffffff8087167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556006805492861692909116919091179055600882905580156108ac57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b6003546000901561092057600380546108d1906001906114f2565b815481106108e1576108e1611509565b600091825260209091206002909102016001015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16919050565b6001545b905090565b600354600090610924906001906114f2565b60006109456108b6565b8211156109fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f4c324f75747075744f7261636c653a2063616e6e6f7420676574206f7574707560448201527f7420666f72206120626c6f636b207468617420686173206e6f74206265656e2060648201527f70726f706f736564000000000000000000000000000000000000000000000000608482015260a40161059d565b600354610aaf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604660248201527f4c324f75747075744f7261636c653a2063616e6e6f7420676574206f7574707560448201527f74206173206e6f206f7574707574732068617665206265656e2070726f706f7360648201527f6564207965740000000000000000000000000000000000000000000000000000608482015260a40161059d565b6003546000905b80821015610b485760006002610acc8385611538565b610ad69190611550565b90508460038281548110610aec57610aec611509565b600091825260209091206002909102016001015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff161015610b3e57610b37816001611538565b9250610b42565b8091505b50610ab6565b5092915050565b60065473ffffffffffffffffffffffffffffffffffffffff163314610bf6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4c324f75747075744f7261636c653a206f6e6c7920746865206368616c6c656e60448201527f67657220616464726573732063616e2064656c657465206f7574707574730000606482015260840161059d565b6003548110610cad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f4c324f75747075744f7261636c653a2063616e6e6f742064656c657465206f7560448201527f747075747320616674657220746865206c6174657374206f757470757420696e60648201527f6465780000000000000000000000000000000000000000000000000000000000608482015260a40161059d565b60085460038281548110610cc357610cc3611509565b6000918252602090912060016002909202010154610cf3906fffffffffffffffffffffffffffffffff16426114f2565b10610da6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604660248201527f4c324f75747075744f7261636c653a2063616e6e6f742064656c657465206f7560448201527f74707574732074686174206861766520616c7265616479206265656e2066696e60648201527f616c697a65640000000000000000000000000000000000000000000000000000608482015260a40161059d565b6000610db160035490565b90508160035581817f4ee37ac2c786ec85e87592d3c5c8a1dd66f8496dda3f125d9ea8ca5f657629b660405160405180910390a35050565b60075473ffffffffffffffffffffffffffffffffffffffff163314610eb6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f4c324f75747075744f7261636c653a206f6e6c79207468652070726f706f736560448201527f7220616464726573732063616e2070726f706f7365206e6577206f757470757460648201527f7300000000000000000000000000000000000000000000000000000000000000608482015260a40161059d565b610ebe611346565b8314610f72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f4c324f75747075744f7261636c653a20626c6f636b206e756d626572206d757360448201527f7420626520657175616c20746f206e65787420657870656374656420626c6f6360648201527f6b206e756d626572000000000000000000000000000000000000000000000000608482015260a40161059d565b42610f7c84611316565b10611009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4c324f75747075744f7261636c653a2063616e6e6f742070726f706f7365204c60448201527f32206f757470757420696e207468652066757475726500000000000000000000606482015260840161059d565b83611096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4c324f75747075744f7261636c653a204c32206f75747075742070726f706f7360448201527f616c2063616e6e6f7420626520746865207a65726f2068617368000000000000606482015260840161059d565b81156111525781814014611152576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f4c324f75747075744f7261636c653a20626c6f636b206861736820646f65732060448201527f6e6f74206d61746368207468652068617368206174207468652065787065637460648201527f6564206865696768740000000000000000000000000000000000000000000000608482015260a40161059d565b8261115c60035490565b857fa7aaf2512769da4e444e3de247be2564225c2e7a8f74cfe528e46e17d24868e24260405161118e91815260200190565b60405180910390a45050604080516060810182529283526fffffffffffffffffffffffffffffffff4281166020850190815292811691840191825260038054600181018255600091909152935160029094027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b810194909455915190518216700100000000000000000000000000000000029116177fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c90910155565b60408051606081018252600080825260208201819052918101919091526003828154811061127a5761127a611509565b600091825260209182902060408051606081018252600290930290910180548352600101546fffffffffffffffffffffffffffffffff8082169484019490945270010000000000000000000000000000000090049092169181019190915292915050565b604080516060810182526000808252602082018190529181019190915260036113068361093b565b8154811061127a5761127a611509565b60006005546001548361132991906114f2565b611333919061158b565b6002546113409190611538565b92915050565b60006004546113536108b6565b6109249190611538565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b803573ffffffffffffffffffffffffffffffffffffffff8116811461139d57600080fd5b919050565b600080600080600080600060e0888a0312156113bd57600080fd5b873596506020880135955060408801359450606088013593506113e260808901611379565b92506113f060a08901611379565b915060c0880135905092959891949750929550565b600060208083528351808285015260005b8181101561143257858101830151858201604001528201611416565b81811115611444576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60006020828403121561148a57600080fd5b5035919050565b600080600080608085870312156114a757600080fd5b5050823594602084013594506040840135936060013592509050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611504576115046114c3565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000821982111561154b5761154b6114c3565b500190565b600082611586577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156115c3576115c36114c3565b50029056fea164736f6c634300080f000a","sourceMap":"611:13425:133:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5264:92;;;;;;;;;;-1:-1:-1;5338:11:133;;5264:92;;;160:25:357;;;148:2;133:18;5264:92:133;;;;;;;;3742:985;;;;;;;;;;-1:-1:-1;3742:985:133;;;;;:::i;:::-;;:::i;:::-;;13212:174;;;;;;;;;;;;;:::i;4953:105::-;;;;;;;;;;-1:-1:-1;5033:18:133;;4953:105;;1426:25;;;;;;;;;;-1:-1:-1;1426:25:133;;;;;;;;;;;1182:42:357;1170:55;;;1152:74;;1140:2;1125:18;1426:25:133;1006:226:357;2598:40:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12608:105::-;;;;;;;;;;;;;:::i;12849:97::-;;;;;;;;;;-1:-1:-1;12923:9:133;:16;12849:97;;5580:88;;;;;;;;;;-1:-1:-1;5651:10:133;;;;5580:88;;743:34;;;;;;;;;;;;;;;;10969:896;;;;;;;;;;-1:-1:-1;10969:896:133;;;;;:::i;:::-;;:::i;863:32::-;;;;;;;;;;;;;;;;6689:975;;;;;;;;;;-1:-1:-1;6689:975:133;;;;;:::i;:::-;;:::i;1285:26::-;;;;;;;;;;;;;;;;8258:1981;;;;;;:::i;:::-;;:::i;10443:146::-;;;;;;;;;;-1:-1:-1;10443:146:133;;;;;:::i;:::-;;:::i;:::-;;;;2705:13:357;;2687:32;;2766:4;2754:17;;;2748:24;2791:34;2863:21;;;2841:20;;;2834:51;;;;2933:17;;;2927:24;2923:33;;;2901:20;;;2894:63;2675:2;2660:18;10443:146:133;2473:490:357;1564:23:133;;;;;;;;;;-1:-1:-1;1564:23:133;;;;;;;;5886:84;;;;;;;;;;-1:-1:-1;5955:8:133;;;;5886:84;;1728:40;;;;;;;;;;;;;;;;12228:174;;;;;;;;;;-1:-1:-1;12228:174:133;;;;;:::i;:::-;;:::i;13854:180::-;;;;;;;;;;-1:-1:-1;13854:180:133;;;;;:::i;:::-;;:::i;13524:121::-;;;;;;;;;;;;;:::i;1114:33::-;;;;;;;;;;;;;;;;6221:120;;;;;;;;;;-1:-1:-1;6309:25:133;;6221:120;;3742:985;3100:19:43;3123:13;;;;;;3122:14;;3168:34;;;;-1:-1:-1;3186:12:43;;3201:1;3186:12;;;;:16;3168:34;3167:97;;;-1:-1:-1;3236:4:43;1465:19:59;:23;;;3208:55:43;;-1:-1:-1;3246:12:43;;;;;:17;3208:55;3146:190;;;;;;;3170:2:357;3146:190:43;;;3152:21:357;3209:2;3189:18;;;3182:30;3248:34;3228:18;;;3221:62;3319:16;3299:18;;;3292:44;3353:19;;3146:190:43;;;;;;;;;3346:12;:16;;;;3361:1;3346:16;;;3372:65;;;;3406:13;:20;;;;;;;;3372:65;4088:1:133::1;4066:19;:23;4058:94;;;::::0;::::1;::::0;;3585:2:357;4058:94:133::1;::::0;::::1;3567:21:357::0;3624:2;3604:18;;;3597:30;3663:34;3643:18;;;3636:62;3734:28;3714:18;;;3707:56;3780:19;;4058:94:133::1;3383:422:357::0;4058:94:133::1;4185:1;4170:12;:16;4162:81;;;::::0;::::1;::::0;;4012:2:357;4162:81:133::1;::::0;::::1;3994:21:357::0;4051:2;4031:18;;;4024:30;4090:34;4070:18;;;4063:62;4161:22;4141:18;;;4134:50;4201:19;;4162:81:133::1;3810:416:357::0;4162:81:133::1;4296:15;4274:18;:37;;4253:152;;;::::0;::::1;::::0;;4433:2:357;4253:152:133::1;::::0;::::1;4415:21:357::0;4472:2;4452:18;;;4445:30;;;4511:34;4491:18;;;4484:62;4582:34;4562:18;;;4555:62;4654:6;4633:19;;;4626:35;4678:19;;4253:152:133::1;4231:472:357::0;4253:152:133::1;4416:18;:40:::0;;;4466:11:::1;:26:::0;;;4502:19:::1;:42:::0;;;4554:17:::1;:38:::0;;;4602:8:::1;:20:::0;;::::1;::::0;;::::1;::::0;;;::::1;;::::0;;;4632:10:::1;:24:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;4666:25:::1;:54:::0;;;3457:99:43;;;;3507:5;3491:21;;;;;;3531:14;;-1:-1:-1;4860:36:357;;3531:14:43;;4848:2:357;4833:18;3531:14:43;;;;;;;3457:99;3090:472;3742:985:133;;;;;;;:::o;13212:174::-;13288:9;:16;13262:7;;13288:21;:91;;13334:9;13344:16;;:20;;13363:1;;13344:20;:::i;:::-;13334:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:45;;;;;;;;;13212:174;-1:-1:-1;13212:174:133:o;13288:91::-;13312:19;;13288:91;13281:98;;13212:174;:::o;12608:105::-;12686:9;:16;12660:7;;12686:20;;12705:1;;12686:20;:::i;10969:896::-;11045:7;11184:19;:17;:19::i;:::-;11166:14;:37;;11145:156;;;;;;;5617:2:357;11145:156:133;;;5599:21:357;5656:2;5636:18;;;5629:30;5695:34;5675:18;;;5668:62;5766:34;5746:18;;;5739:62;5838:10;5817:19;;;5810:39;5866:19;;11145:156:133;5415:476:357;11145:156:133;11379:9;:16;11371:103;;;;;;;6098:2:357;11371:103:133;;;6080:21:357;6137:2;6117:18;;;6110:30;6176:34;6156:18;;;6149:62;6247:34;6227:18;;;6220:62;6319:8;6298:19;;;6291:37;6345:19;;11371:103:133;5896:474:357;11371:103:133;11589:9;:16;11552:10;;11615:224;11627:2;11622;:7;11615:224;;;11645:11;11671:1;11660:7;11665:2;11660;:7;:::i;:::-;11659:13;;;;:::i;:::-;11645:27;;11721:14;11690:9;11700:3;11690:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:28;;;;;;;;:45;11686:143;;;11760:7;:3;11766:1;11760:7;:::i;:::-;11755:12;;11686:143;;;11811:3;11806:8;;11686:143;11631:208;11615:224;;;-1:-1:-1;11856:2:133;10969:896;-1:-1:-1;;10969:896:133:o;6689:975::-;6779:10;;;;6765;:24;6757:99;;;;;;;6989:2:357;6757:99:133;;;6971:21:357;7028:2;7008:18;;;7001:30;7067:34;7047:18;;;7040:62;7138:32;7118:18;;;7111:60;7188:19;;6757:99:133;6787:426:357;6757:99:133;6974:9;:16;6957:33;;6936:135;;;;;;;7420:2:357;6936:135:133;;;7402:21:357;7459:2;7439:18;;;7432:30;7498:34;7478:18;;;7471:62;7569:34;7549:18;;;7542:62;7641:5;7620:19;;;7613:34;7664:19;;6936:135:133;7218:471:357;6936:135:133;7238:25;;7200:9;7210:14;7200:25;;;;;;;;:::i;:::-;;;;;;;;;:35;:25;;;;;:35;;7182:53;;7200:35;;7182:15;:53;:::i;:::-;:81;7161:198;;;;;;;7896:2:357;7161:198:133;;;7878:21:357;7935:2;7915:18;;;7908:30;7974:34;7954:18;;;7947:62;8045:34;8025:18;;;8018:62;8117:8;8096:19;;;8089:37;8143:19;;7161:198:133;7694:474:357;7161:198:133;7370:29;7402:17;12923:9;:16;;12849:97;7402:17;7370:49;;7564:14;7548;7541:38;7642:14;7619:21;7604:53;;;;;;;;;;6747:917;6689:975;:::o;8258:1981::-;8481:8;;;;8467:10;:22;8459:100;;;;;;;8375:2:357;8459:100:133;;;8357:21:357;8414:2;8394:18;;;8387:30;8453:34;8433:18;;;8426:62;8524:34;8504:18;;;8497:62;8596:3;8575:19;;;8568:32;8617:19;;8459:100:133;8173:469:357;8459:100:133;8609:17;:15;:17::i;:::-;8591:14;:35;8570:154;;;;;;;8849:2:357;8570:154:133;;;8831:21:357;8888:2;8868:18;;;8861:30;8927:34;8907:18;;;8900:62;8998:34;8978:18;;;8971:62;9070:10;9049:19;;;9042:39;9098:19;;8570:154:133;8647:476:357;8570:154:133;8793:15;8756:34;8775:14;8756:18;:34::i;:::-;:52;8735:153;;;;;;;9330:2:357;8735:153:133;;;9312:21:357;9369:2;9349:18;;;9342:30;9408:34;9388:18;;;9381:62;9479:24;9459:18;;;9452:52;9521:19;;8735:153:133;9128:418:357;8735:153:133;8907:11;8899:96;;;;;;;9753:2:357;8899:96:133;;;9735:21:357;9792:2;9772:18;;;9765:30;9831:34;9811:18;;;9804:62;9902:28;9882:18;;;9875:56;9948:19;;8899:96:133;9551:422:357;8899:96:133;9010:26;;9006:897;;9773:12;9754:14;9744:25;:41;9719:173;;;;;;;10180:2:357;9719:173:133;;;10162:21:357;10219:2;10199:18;;;10192:30;10258:34;10238:18;;;10231:62;10329:34;10309:18;;;10302:62;10401:11;10380:19;;;10373:40;10430:19;;9719:173:133;9978:477:357;9719:173:133;9965:14;9946:17;12923:9;:16;;12849:97;9946:17;9933:11;9918:79;9981:15;9918:79;;;;160:25:357;;148:2;133:18;;14:177;9918:79:133;;;;;;;;-1:-1:-1;;10036:186:133;;;;;;;;;;;;10135:15;10036:186;;;;;;;;;;;;;;;;;10008:9;:224;;;;;;;-1:-1:-1;10008:224:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8258:1981::o;10443:146::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;10557:9:133;10567:14;10557:25;;;;;;;;:::i;:::-;;;;;;;;;;10550:32;;;;;;;;10557:25;;;;;;;10550:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10443:146;-1:-1:-1;;10443:146:133:o;12228:174::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;12347:9:133;12357:37;12379:14;12357:21;:37::i;:::-;12347:48;;;;;;;;:::i;13854:180::-;13927:7;14015:11;;13992:19;;13975:14;:36;;;;:::i;:::-;13974:52;;;;:::i;:::-;13953:17;;:74;;;;:::i;:::-;13946:81;13854:180;-1:-1:-1;;13854:180:133:o;13524:121::-;13572:7;13620:18;;13598:19;:17;:19::i;:::-;:40;;;;:::i;1175:320:59:-;1465:19;;;:23;;;1175:320::o;196:196:357:-;264:20;;324:42;313:54;;303:65;;293:93;;382:1;379;372:12;293:93;196:196;;;:::o;397:604::-;510:6;518;526;534;542;550;558;611:3;599:9;590:7;586:23;582:33;579:53;;;628:1;625;618:12;579:53;664:9;651:23;641:33;;721:2;710:9;706:18;693:32;683:42;;772:2;761:9;757:18;744:32;734:42;;823:2;812:9;808:18;795:32;785:42;;846:39;880:3;869:9;865:19;846:39;:::i;:::-;836:49;;904:39;938:3;927:9;923:19;904:39;:::i;:::-;894:49;;990:3;979:9;975:19;962:33;952:43;;397:604;;;;;;;;;;:::o;1237:656::-;1349:4;1378:2;1407;1396:9;1389:21;1439:6;1433:13;1482:6;1477:2;1466:9;1462:18;1455:34;1507:1;1517:140;1531:6;1528:1;1525:13;1517:140;;;1626:14;;;1622:23;;1616:30;1592:17;;;1611:2;1588:26;1581:66;1546:10;;1517:140;;;1675:6;1672:1;1669:13;1666:91;;;1745:1;1740:2;1731:6;1720:9;1716:22;1712:31;1705:42;1666:91;-1:-1:-1;1809:2:357;1797:15;1814:66;1793:88;1778:104;;;;1884:2;1774:113;;1237:656;-1:-1:-1;;;1237:656:357:o;1898:180::-;1957:6;2010:2;1998:9;1989:7;1985:23;1981:32;1978:52;;;2026:1;2023;2016:12;1978:52;-1:-1:-1;2049:23:357;;1898:180;-1:-1:-1;1898:180:357:o;2083:385::-;2169:6;2177;2185;2193;2246:3;2234:9;2225:7;2221:23;2217:33;2214:53;;;2263:1;2260;2253:12;2214:53;-1:-1:-1;;2286:23:357;;;2356:2;2341:18;;2328:32;;-1:-1:-1;2407:2:357;2392:18;;2379:32;;2458:2;2443:18;2430:32;;-1:-1:-1;2083:385:357;-1:-1:-1;2083:385:357:o;4907:184::-;4959:77;4956:1;4949:88;5056:4;5053:1;5046:15;5080:4;5077:1;5070:15;5096:125;5136:4;5164:1;5161;5158:8;5155:34;;;5169:18;;:::i;:::-;-1:-1:-1;5206:9:357;;5096:125::o;5226:184::-;5278:77;5275:1;5268:88;5375:4;5372:1;5365:15;5399:4;5396:1;5389:15;6375:128;6415:3;6446:1;6442:6;6439:1;6436:13;6433:39;;;6452:18;;:::i;:::-;-1:-1:-1;6488:9:357;;6375:128::o;6508:274::-;6548:1;6574;6564:189;;6609:77;6606:1;6599:88;6710:4;6707:1;6700:15;6738:4;6735:1;6728:15;6564:189;-1:-1:-1;6767:9:357;;6508:274::o;10460:228::-;10500:7;10626:1;10558:66;10554:74;10551:1;10548:81;10543:1;10536:9;10529:17;10525:105;10522:131;;;10633:18;;:::i;:::-;-1:-1:-1;10673:9:357;;10460:228::o","linkReferences":{}},"methodIdentifiers":{"CHALLENGER()":"6b4d98dd","FINALIZATION_PERIOD_SECONDS()":"f4daa291","L2_BLOCK_TIME()":"002134cc","PROPOSER()":"bffa7f0f","SUBMISSION_INTERVAL()":"529933df","challenger()":"534db0e2","computeL2Timestamp(uint256)":"d1de856c","deleteL2Outputs(uint256)":"89c44cbb","finalizationPeriodSeconds()":"ce5db8d6","getL2Output(uint256)":"a25ae557","getL2OutputAfter(uint256)":"cf8e5cf0","getL2OutputIndexAfter(uint256)":"7f006420","initialize(uint256,uint256,uint256,uint256,address,address,uint256)":"1c89c97d","l2BlockTime()":"93991af3","latestBlockNumber()":"4599c788","latestOutputIndex()":"69f16eec","nextBlockNumber()":"dcec3348","nextOutputIndex()":"6abcf563","proposeL2Output(bytes32,uint256,bytes32,uint256)":"9aaab648","proposer()":"a8e4fb90","startingBlockNumber()":"70872aa5","startingTimestamp()":"88786272","submissionInterval()":"e1a41bcf","version()":"54fd4d50"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"outputRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"l2OutputIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"l2BlockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"l1Timestamp\",\"type\":\"uint256\"}],\"name\":\"OutputProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"prevNextOutputIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newNextOutputIndex\",\"type\":\"uint256\"}],\"name\":\"OutputsDeleted\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CHALLENGER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FINALIZATION_PERIOD_SECONDS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"L2_BLOCK_TIME\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROPOSER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SUBMISSION_INTERVAL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"challenger\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_l2BlockNumber\",\"type\":\"uint256\"}],\"name\":\"computeL2Timestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_l2OutputIndex\",\"type\":\"uint256\"}],\"name\":\"deleteL2Outputs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"finalizationPeriodSeconds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_l2OutputIndex\",\"type\":\"uint256\"}],\"name\":\"getL2Output\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"outputRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint128\",\"name\":\"timestamp\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"l2BlockNumber\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.OutputProposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_l2BlockNumber\",\"type\":\"uint256\"}],\"name\":\"getL2OutputAfter\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"outputRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint128\",\"name\":\"timestamp\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"l2BlockNumber\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.OutputProposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_l2BlockNumber\",\"type\":\"uint256\"}],\"name\":\"getL2OutputIndexAfter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_submissionInterval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_l2BlockTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_startingBlockNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_startingTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_challenger\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_finalizationPeriodSeconds\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l2BlockTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestOutputIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextOutputIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_outputRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_l2BlockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_l1BlockHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_l1BlockNumber\",\"type\":\"uint256\"}],\"name\":\"proposeL2Output\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proposer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startingBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startingTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"submissionInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"custom:proxied\":\"@title L2OutputOracle\",\"events\":{\"OutputProposed(bytes32,uint256,uint256,uint256)\":{\"params\":{\"l1Timestamp\":\"The L1 timestamp when proposed.\",\"l2BlockNumber\":\"The L2 block number of the output root.\",\"l2OutputIndex\":\"The index of the output in the l2Outputs array.\",\"outputRoot\":\"The output root.\"}},\"OutputsDeleted(uint256,uint256)\":{\"params\":{\"newNextOutputIndex\":\"Next L2 output index after the deletion.\",\"prevNextOutputIndex\":\"Next L2 output index before the deletion.\"}}},\"kind\":\"dev\",\"methods\":{\"CHALLENGER()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"Address of the challenger.\"}},\"FINALIZATION_PERIOD_SECONDS()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"Finalization period in seconds.\"}},\"L2_BLOCK_TIME()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"L2 block time.\"}},\"PROPOSER()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"Address of the proposer.\"}},\"SUBMISSION_INTERVAL()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"Submission interval.\"}},\"computeL2Timestamp(uint256)\":{\"params\":{\"_l2BlockNumber\":\"The L2 block number of the target block.\"},\"returns\":{\"_0\":\"L2 timestamp of the given block.\"}},\"deleteL2Outputs(uint256)\":{\"params\":{\"_l2OutputIndex\":\"Index of the first L2 output to be deleted.                       All outputs after this output will also be deleted.\"}},\"getL2Output(uint256)\":{\"params\":{\"_l2OutputIndex\":\"Index of the output to return.\"},\"returns\":{\"_0\":\"The output at the given index.\"}},\"getL2OutputAfter(uint256)\":{\"params\":{\"_l2BlockNumber\":\"L2 block number to find a checkpoint for.\"},\"returns\":{\"_0\":\"First checkpoint that commits to the given L2 block number.\"}},\"getL2OutputIndexAfter(uint256)\":{\"params\":{\"_l2BlockNumber\":\"L2 block number to find a checkpoint for.\"},\"returns\":{\"_0\":\"Index of the first checkpoint that commits to the given L2 block number.\"}},\"initialize(uint256,uint256,uint256,uint256,address,address,uint256)\":{\"params\":{\"_challenger\":\"The address of the challenger.\",\"_finalizationPeriodSeconds\":\"The minimum time (in seconds) that must elapse before a withdrawal                                   can be finalized.\",\"_l2BlockTime\":\"The time per L2 block, in seconds.\",\"_proposer\":\"The address of the proposer.\",\"_startingBlockNumber\":\"The number of the first L2 block.\",\"_startingTimestamp\":\"The timestamp of the first L2 block.\",\"_submissionInterval\":\"Interval in blocks at which checkpoints must be submitted.\"}},\"latestBlockNumber()\":{\"returns\":{\"_0\":\"Latest submitted L2 block number.\"}},\"latestOutputIndex()\":{\"returns\":{\"_0\":\"The number of outputs that have been proposed.\"}},\"nextBlockNumber()\":{\"returns\":{\"_0\":\"Next L2 block number.\"}},\"nextOutputIndex()\":{\"returns\":{\"_0\":\"The index of the next output to be proposed.\"}},\"proposeL2Output(bytes32,uint256,bytes32,uint256)\":{\"params\":{\"_l1BlockHash\":\"A block hash which must be included in the current chain.\",\"_l1BlockNumber\":\"The block number with the specified block hash.\",\"_l2BlockNumber\":\"The L2 block number that resulted in _outputRoot.\",\"_outputRoot\":\"The L2 output of the checkpoint block.\"}}},\"stateVariables\":{\"challenger\":{\"custom:network-specific\":\"\"},\"finalizationPeriodSeconds\":{\"custom:network-specific\":\"\"},\"l2BlockTime\":{\"custom:network-specific\":\"\"},\"proposer\":{\"custom:network-specific\":\"\"},\"submissionInterval\":{\"custom:network-specific\":\"\"},\"version\":{\"custom:semver\":\"1.8.0\"}},\"version\":1},\"userdoc\":{\"events\":{\"OutputProposed(bytes32,uint256,uint256,uint256)\":{\"notice\":\"Emitted when an output is proposed.\"},\"OutputsDeleted(uint256,uint256)\":{\"notice\":\"Emitted when outputs are deleted.\"}},\"kind\":\"user\",\"methods\":{\"CHALLENGER()\":{\"notice\":\"Getter for the challenger address.         Public getter is legacy and will be removed in the future. Use `challenger` instead.\"},\"FINALIZATION_PERIOD_SECONDS()\":{\"notice\":\"Getter for the finalizationPeriodSeconds.         Public getter is legacy and will be removed in the future. Use `finalizationPeriodSeconds` instead.\"},\"L2_BLOCK_TIME()\":{\"notice\":\"Getter for the l2BlockTime.         Public getter is legacy and will be removed in the future. Use `l2BlockTime` instead.\"},\"PROPOSER()\":{\"notice\":\"Getter for the proposer address.         Public getter is legacy and will be removed in the future. Use `proposer` instead.\"},\"SUBMISSION_INTERVAL()\":{\"notice\":\"Getter for the submissionInterval.         Public getter is legacy and will be removed in the future. Use `submissionInterval` instead.\"},\"challenger()\":{\"notice\":\"The address of the challenger. Can be updated via upgrade.\"},\"computeL2Timestamp(uint256)\":{\"notice\":\"Returns the L2 timestamp corresponding to a given L2 block number.\"},\"constructor\":{\"notice\":\"Constructs the L2OutputOracle contract. Initializes variables to the same values as         in the getting-started config.\"},\"deleteL2Outputs(uint256)\":{\"notice\":\"Deletes all output proposals after and including the proposal that corresponds to         the given output index. Only the challenger address can delete outputs.\"},\"finalizationPeriodSeconds()\":{\"notice\":\"The minimum time (in seconds) that must elapse before a withdrawal can be finalized.\"},\"getL2Output(uint256)\":{\"notice\":\"Returns an output by index. Needed to return a struct instead of a tuple.\"},\"getL2OutputAfter(uint256)\":{\"notice\":\"Returns the L2 output proposal that checkpoints a given L2 block number.         Uses a binary search to find the first output greater than or equal to the given         block.\"},\"getL2OutputIndexAfter(uint256)\":{\"notice\":\"Returns the index of the L2 output that checkpoints a given L2 block number.         Uses a binary search to find the first output greater than or equal to the given         block.\"},\"initialize(uint256,uint256,uint256,uint256,address,address,uint256)\":{\"notice\":\"Initializer.\"},\"l2BlockTime()\":{\"notice\":\"The time between L2 blocks in seconds. Once set, this value MUST NOT be modified.\"},\"latestBlockNumber()\":{\"notice\":\"Returns the block number of the latest submitted L2 output proposal.         If no proposals been submitted yet then this function will return the starting         block number.\"},\"latestOutputIndex()\":{\"notice\":\"Returns the number of outputs that have been proposed.         Will revert if no outputs have been proposed yet.\"},\"nextBlockNumber()\":{\"notice\":\"Computes the block number of the next L2 block that needs to be checkpointed.\"},\"nextOutputIndex()\":{\"notice\":\"Returns the index of the next output to be proposed.\"},\"proposeL2Output(bytes32,uint256,bytes32,uint256)\":{\"notice\":\"Accepts an outputRoot and the timestamp of the corresponding L2 block.         The timestamp must be equal to the current value returned by `nextTimestamp()` in         order to be accepted. This function may only be called by the Proposer.\"},\"proposer()\":{\"notice\":\"The address of the proposer. Can be updated via upgrade.\"},\"startingBlockNumber()\":{\"notice\":\"The number of the first L2 block recorded in this contract.\"},\"startingTimestamp()\":{\"notice\":\"The timestamp of the first L2 block recorded in this contract.\"},\"submissionInterval()\":{\"notice\":\"The interval in L2 blocks at which checkpoints must be submitted.\"},\"version()\":{\"notice\":\"Semantic version.\"}},\"notice\":\"The L2OutputOracle contains an array of L2 state outputs, where each output is a         commitment to the state of the L2 chain. Other contracts like the OptimismPortal use         these outputs to verify information about the state of L2.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/L1/L2OutputOracle.sol\":\"L2OutputOracle\"},\"evmVersion\":\"london\",\"libraries\":{},\"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/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady/=lib/solady/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f\",\"dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xd15c3e400531f00203839159b2b8e7209c5158b35618f570c695b7e47f12e9f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b600b852e0597aa69989cc263111f02097e2827edc1bdc70306303e3af5e9929\",\"dweb:/ipfs/QmU4WfM28A1nDqghuuGeFmN3CnVrk6opWtiF65K4vhFPeC\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb3ebde1c8d27576db912d87c3560dab14adfb9cd001be95890ec4ba035e652e7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a709421c4f5d4677db8216055d2d4dac96a613efdb08178a9f7041f0c5cef689\",\"dweb:/ipfs/QmYs2rStvVLDnSJs8HgaMD1ABwoKKWdiVbQyNfLfFWTjTy\"]},\"lib/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x622fcd8a49e132df5ec7651cc6ae3aaf0cf59bdcd67a9a804a1b9e2485113b7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af77088eb606427d4c55e578984a615779c86bc30646a20f7bb27299ba390f7c\",\"dweb:/ipfs/QmZGQdhdQDtHc7gZXWrKXgA3govc74X8U63BiWhPQK3mK8\"]},\"src/L1/L2OutputOracle.sol\":{\"keccak256\":\"0x342c5084f3c640c90530122bd78372c011d6162e698dd8c8daec9496fef01d42\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8700a3d486bd62cbb861ff80175b8040336940515791073af6a036db7c2df303\",\"dweb:/ipfs/QmSGKTH84rVHWgMg4d6GQZCmCJ16KuUuTsMwPMDdJxCsww\"]},\"src/L1/ResourceMetering.sol\":{\"keccak256\":\"0xde3ac62c60f27a3f1ba06eec94f4eda45e7ec5544c6a5d6b79543a7184e44408\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://265a2845c4ff0d9076dd0505755cf2bdf799f4fdc09ef016865a26b51f5c3409\",\"dweb:/ipfs/QmRzSdBD8jmQf3U9u2ATRAzzuyo6c5ugz8VA5ZM4vzoGiM\"]},\"src/libraries/Arithmetic.sol\":{\"keccak256\":\"0x91345e053584f82ad04d682ba821cf3ede808304f5b2a88116a894cf692c21db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://005e3c42d2edfca0a506cbda94d3b0104eddf20c00bd1bd25272f53f2ef74c72\",\"dweb:/ipfs/QmdaW6Nge6NKoGvFqRpQjBpM2fXpc5y8WpZyBnDnKicdJq\"]},\"src/libraries/Burn.sol\":{\"keccak256\":\"0x90a795bcea3ef06d6d5011256c4bd63d1a4271f519246dbf1ee3e8f1c0e21010\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f60c3aa77cf0c484ddda4754157cff4dc0e2eace4bea67990daff4c0612ab5f\",\"dweb:/ipfs/QmSYGanMFve9uBC17X7hFneSFnwnJxz86Jgh6MX9BRMweb\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0xe0aeec7d6e5d1e44a11405d3b5bfc384ea092c39bea0b763ab937a26fd427132\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11aa3bff9da26ca2545132ec7994866690446a5321023811c254410d9593bd9b\",\"dweb:/ipfs/QmVxWqadxvdfkqdrhfWisDqeAthibn4HEE1P6o9aFxXLhp\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x75900d651301940d24c00d14f0b3b6cbd6dcf379173ceaa31d9bf5be934a9aa4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c2632c5bf4fa3982391c32110eec9fa07917b483b2442cbaf18bdde5bdb24e\",\"dweb:/ipfs/QmSUs6Amkeootf5gKGbKi4mJpvhN2U8i1ED6ef2dskV5xc\"]},\"src/universal/ISemver.sol\":{\"keccak256\":\"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a\",\"dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"outputRoot","type":"bytes32","indexed":true},{"internalType":"uint256","name":"l2OutputIndex","type":"uint256","indexed":true},{"internalType":"uint256","name":"l2BlockNumber","type":"uint256","indexed":true},{"internalType":"uint256","name":"l1Timestamp","type":"uint256","indexed":false}],"type":"event","name":"OutputProposed","anonymous":false},{"inputs":[{"internalType":"uint256","name":"prevNextOutputIndex","type":"uint256","indexed":true},{"internalType":"uint256","name":"newNextOutputIndex","type":"uint256","indexed":true}],"type":"event","name":"OutputsDeleted","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"CHALLENGER","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FINALIZATION_PERIOD_SECONDS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"L2_BLOCK_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"PROPOSER","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SUBMISSION_INTERVAL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"challenger","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_l2BlockNumber","type":"uint256"}],"stateMutability":"view","type":"function","name":"computeL2Timestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_l2OutputIndex","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deleteL2Outputs"},{"inputs":[],"stateMutability":"view","type":"function","name":"finalizationPeriodSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_l2OutputIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"getL2Output","outputs":[{"internalType":"struct Types.OutputProposal","name":"","type":"tuple","components":[{"internalType":"bytes32","name":"outputRoot","type":"bytes32"},{"internalType":"uint128","name":"timestamp","type":"uint128"},{"internalType":"uint128","name":"l2BlockNumber","type":"uint128"}]}]},{"inputs":[{"internalType":"uint256","name":"_l2BlockNumber","type":"uint256"}],"stateMutability":"view","type":"function","name":"getL2OutputAfter","outputs":[{"internalType":"struct Types.OutputProposal","name":"","type":"tuple","components":[{"internalType":"bytes32","name":"outputRoot","type":"bytes32"},{"internalType":"uint128","name":"timestamp","type":"uint128"},{"internalType":"uint128","name":"l2BlockNumber","type":"uint128"}]}]},{"inputs":[{"internalType":"uint256","name":"_l2BlockNumber","type":"uint256"}],"stateMutability":"view","type":"function","name":"getL2OutputIndexAfter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_submissionInterval","type":"uint256"},{"internalType":"uint256","name":"_l2BlockTime","type":"uint256"},{"internalType":"uint256","name":"_startingBlockNumber","type":"uint256"},{"internalType":"uint256","name":"_startingTimestamp","type":"uint256"},{"internalType":"address","name":"_proposer","type":"address"},{"internalType":"address","name":"_challenger","type":"address"},{"internalType":"uint256","name":"_finalizationPeriodSeconds","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"l2BlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"latestBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"latestOutputIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nextBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nextOutputIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"_outputRoot","type":"bytes32"},{"internalType":"uint256","name":"_l2BlockNumber","type":"uint256"},{"internalType":"bytes32","name":"_l1BlockHash","type":"bytes32"},{"internalType":"uint256","name":"_l1BlockNumber","type":"uint256"}],"stateMutability":"payable","type":"function","name":"proposeL2Output"},{"inputs":[],"stateMutability":"view","type":"function","name":"proposer","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"startingBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"startingTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"submissionInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"version","outputs":[{"internalType":"string","name":"","type":"string"}]}],"devdoc":{"kind":"dev","methods":{"CHALLENGER()":{"custom:legacy":"","returns":{"_0":"Address of the challenger."}},"FINALIZATION_PERIOD_SECONDS()":{"custom:legacy":"","returns":{"_0":"Finalization period in seconds."}},"L2_BLOCK_TIME()":{"custom:legacy":"","returns":{"_0":"L2 block time."}},"PROPOSER()":{"custom:legacy":"","returns":{"_0":"Address of the proposer."}},"SUBMISSION_INTERVAL()":{"custom:legacy":"","returns":{"_0":"Submission interval."}},"computeL2Timestamp(uint256)":{"params":{"_l2BlockNumber":"The L2 block number of the target block."},"returns":{"_0":"L2 timestamp of the given block."}},"deleteL2Outputs(uint256)":{"params":{"_l2OutputIndex":"Index of the first L2 output to be deleted.                       All outputs after this output will also be deleted."}},"getL2Output(uint256)":{"params":{"_l2OutputIndex":"Index of the output to return."},"returns":{"_0":"The output at the given index."}},"getL2OutputAfter(uint256)":{"params":{"_l2BlockNumber":"L2 block number to find a checkpoint for."},"returns":{"_0":"First checkpoint that commits to the given L2 block number."}},"getL2OutputIndexAfter(uint256)":{"params":{"_l2BlockNumber":"L2 block number to find a checkpoint for."},"returns":{"_0":"Index of the first checkpoint that commits to the given L2 block number."}},"initialize(uint256,uint256,uint256,uint256,address,address,uint256)":{"params":{"_challenger":"The address of the challenger.","_finalizationPeriodSeconds":"The minimum time (in seconds) that must elapse before a withdrawal                                   can be finalized.","_l2BlockTime":"The time per L2 block, in seconds.","_proposer":"The address of the proposer.","_startingBlockNumber":"The number of the first L2 block.","_startingTimestamp":"The timestamp of the first L2 block.","_submissionInterval":"Interval in blocks at which checkpoints must be submitted."}},"latestBlockNumber()":{"returns":{"_0":"Latest submitted L2 block number."}},"latestOutputIndex()":{"returns":{"_0":"The number of outputs that have been proposed."}},"nextBlockNumber()":{"returns":{"_0":"Next L2 block number."}},"nextOutputIndex()":{"returns":{"_0":"The index of the next output to be proposed."}},"proposeL2Output(bytes32,uint256,bytes32,uint256)":{"params":{"_l1BlockHash":"A block hash which must be included in the current chain.","_l1BlockNumber":"The block number with the specified block hash.","_l2BlockNumber":"The L2 block number that resulted in _outputRoot.","_outputRoot":"The L2 output of the checkpoint block."}}},"version":1},"userdoc":{"kind":"user","methods":{"CHALLENGER()":{"notice":"Getter for the challenger address.         Public getter is legacy and will be removed in the future. Use `challenger` instead."},"FINALIZATION_PERIOD_SECONDS()":{"notice":"Getter for the finalizationPeriodSeconds.         Public getter is legacy and will be removed in the future. Use `finalizationPeriodSeconds` instead."},"L2_BLOCK_TIME()":{"notice":"Getter for the l2BlockTime.         Public getter is legacy and will be removed in the future. Use `l2BlockTime` instead."},"PROPOSER()":{"notice":"Getter for the proposer address.         Public getter is legacy and will be removed in the future. Use `proposer` instead."},"SUBMISSION_INTERVAL()":{"notice":"Getter for the submissionInterval.         Public getter is legacy and will be removed in the future. Use `submissionInterval` instead."},"challenger()":{"notice":"The address of the challenger. Can be updated via upgrade."},"computeL2Timestamp(uint256)":{"notice":"Returns the L2 timestamp corresponding to a given L2 block number."},"constructor":{"notice":"Constructs the L2OutputOracle contract. Initializes variables to the same values as         in the getting-started config."},"deleteL2Outputs(uint256)":{"notice":"Deletes all output proposals after and including the proposal that corresponds to         the given output index. Only the challenger address can delete outputs."},"finalizationPeriodSeconds()":{"notice":"The minimum time (in seconds) that must elapse before a withdrawal can be finalized."},"getL2Output(uint256)":{"notice":"Returns an output by index. Needed to return a struct instead of a tuple."},"getL2OutputAfter(uint256)":{"notice":"Returns the L2 output proposal that checkpoints a given L2 block number.         Uses a binary search to find the first output greater than or equal to the given         block."},"getL2OutputIndexAfter(uint256)":{"notice":"Returns the index of the L2 output that checkpoints a given L2 block number.         Uses a binary search to find the first output greater than or equal to the given         block."},"initialize(uint256,uint256,uint256,uint256,address,address,uint256)":{"notice":"Initializer."},"l2BlockTime()":{"notice":"The time between L2 blocks in seconds. Once set, this value MUST NOT be modified."},"latestBlockNumber()":{"notice":"Returns the block number of the latest submitted L2 output proposal.         If no proposals been submitted yet then this function will return the starting         block number."},"latestOutputIndex()":{"notice":"Returns the number of outputs that have been proposed.         Will revert if no outputs have been proposed yet."},"nextBlockNumber()":{"notice":"Computes the block number of the next L2 block that needs to be checkpointed."},"nextOutputIndex()":{"notice":"Returns the index of the next output to be proposed."},"proposeL2Output(bytes32,uint256,bytes32,uint256)":{"notice":"Accepts an outputRoot and the timestamp of the corresponding L2 block.         The timestamp must be equal to the current value returned by `nextTimestamp()` in         order to be accepted. This function may only be called by the Proposer."},"proposer()":{"notice":"The address of the proposer. Can be updated via upgrade."},"startingBlockNumber()":{"notice":"The number of the first L2 block recorded in this contract."},"startingTimestamp()":{"notice":"The timestamp of the first L2 block recorded in this contract."},"submissionInterval()":{"notice":"The interval in L2 blocks at which checkpoints must be submitted."},"version()":{"notice":"Semantic version."}},"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/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady/=lib/solady/src/","ds-test/=lib/forge-std/lib/ds-test/src/","forge-std/=lib/forge-std/src/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","safe-contracts/=lib/safe-contracts/contracts/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/L1/L2OutputOracle.sol":"L2OutputOracle"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66","urls":["bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f","dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xd15c3e400531f00203839159b2b8e7209c5158b35618f570c695b7e47f12e9f0","urls":["bzz-raw://b600b852e0597aa69989cc263111f02097e2827edc1bdc70306303e3af5e9929","dweb:/ipfs/QmU4WfM28A1nDqghuuGeFmN3CnVrk6opWtiF65K4vhFPeC"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb3ebde1c8d27576db912d87c3560dab14adfb9cd001be95890ec4ba035e652e7","urls":["bzz-raw://a709421c4f5d4677db8216055d2d4dac96a613efdb08178a9f7041f0c5cef689","dweb:/ipfs/QmYs2rStvVLDnSJs8HgaMD1ABwoKKWdiVbQyNfLfFWTjTy"],"license":"MIT"},"lib/solmate/src/utils/FixedPointMathLib.sol":{"keccak256":"0x622fcd8a49e132df5ec7651cc6ae3aaf0cf59bdcd67a9a804a1b9e2485113b7d","urls":["bzz-raw://af77088eb606427d4c55e578984a615779c86bc30646a20f7bb27299ba390f7c","dweb:/ipfs/QmZGQdhdQDtHc7gZXWrKXgA3govc74X8U63BiWhPQK3mK8"],"license":"MIT"},"src/L1/L2OutputOracle.sol":{"keccak256":"0x342c5084f3c640c90530122bd78372c011d6162e698dd8c8daec9496fef01d42","urls":["bzz-raw://8700a3d486bd62cbb861ff80175b8040336940515791073af6a036db7c2df303","dweb:/ipfs/QmSGKTH84rVHWgMg4d6GQZCmCJ16KuUuTsMwPMDdJxCsww"],"license":"MIT"},"src/L1/ResourceMetering.sol":{"keccak256":"0xde3ac62c60f27a3f1ba06eec94f4eda45e7ec5544c6a5d6b79543a7184e44408","urls":["bzz-raw://265a2845c4ff0d9076dd0505755cf2bdf799f4fdc09ef016865a26b51f5c3409","dweb:/ipfs/QmRzSdBD8jmQf3U9u2ATRAzzuyo6c5ugz8VA5ZM4vzoGiM"],"license":"MIT"},"src/libraries/Arithmetic.sol":{"keccak256":"0x91345e053584f82ad04d682ba821cf3ede808304f5b2a88116a894cf692c21db","urls":["bzz-raw://005e3c42d2edfca0a506cbda94d3b0104eddf20c00bd1bd25272f53f2ef74c72","dweb:/ipfs/QmdaW6Nge6NKoGvFqRpQjBpM2fXpc5y8WpZyBnDnKicdJq"],"license":"MIT"},"src/libraries/Burn.sol":{"keccak256":"0x90a795bcea3ef06d6d5011256c4bd63d1a4271f519246dbf1ee3e8f1c0e21010","urls":["bzz-raw://9f60c3aa77cf0c484ddda4754157cff4dc0e2eace4bea67990daff4c0612ab5f","dweb:/ipfs/QmSYGanMFve9uBC17X7hFneSFnwnJxz86Jgh6MX9BRMweb"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0xe0aeec7d6e5d1e44a11405d3b5bfc384ea092c39bea0b763ab937a26fd427132","urls":["bzz-raw://11aa3bff9da26ca2545132ec7994866690446a5321023811c254410d9593bd9b","dweb:/ipfs/QmVxWqadxvdfkqdrhfWisDqeAthibn4HEE1P6o9aFxXLhp"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x75900d651301940d24c00d14f0b3b6cbd6dcf379173ceaa31d9bf5be934a9aa4","urls":["bzz-raw://99c2632c5bf4fa3982391c32110eec9fa07917b483b2442cbaf18bdde5bdb24e","dweb:/ipfs/QmSUs6Amkeootf5gKGbKi4mJpvhN2U8i1ED6ef2dskV5xc"],"license":"MIT"},"src/universal/ISemver.sol":{"keccak256":"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44","urls":["bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a","dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[{"astId":49534,"contract":"src/L1/L2OutputOracle.sol:L2OutputOracle","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":49537,"contract":"src/L1/L2OutputOracle.sol:L2OutputOracle","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":85939,"contract":"src/L1/L2OutputOracle.sol:L2OutputOracle","label":"startingBlockNumber","offset":0,"slot":"1","type":"t_uint256"},{"astId":85942,"contract":"src/L1/L2OutputOracle.sol:L2OutputOracle","label":"startingTimestamp","offset":0,"slot":"2","type":"t_uint256"},{"astId":85947,"contract":"src/L1/L2OutputOracle.sol:L2OutputOracle","label":"l2Outputs","offset":0,"slot":"3","type":"t_array(t_struct(OutputProposal)104307_storage)dyn_storage"},{"astId":85950,"contract":"src/L1/L2OutputOracle.sol:L2OutputOracle","label":"submissionInterval","offset":0,"slot":"4","type":"t_uint256"},{"astId":85953,"contract":"src/L1/L2OutputOracle.sol:L2OutputOracle","label":"l2BlockTime","offset":0,"slot":"5","type":"t_uint256"},{"astId":85956,"contract":"src/L1/L2OutputOracle.sol:L2OutputOracle","label":"challenger","offset":0,"slot":"6","type":"t_address"},{"astId":85959,"contract":"src/L1/L2OutputOracle.sol:L2OutputOracle","label":"proposer","offset":0,"slot":"7","type":"t_address"},{"astId":85962,"contract":"src/L1/L2OutputOracle.sol:L2OutputOracle","label":"finalizationPeriodSeconds","offset":0,"slot":"8","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_struct(OutputProposal)104307_storage)dyn_storage":{"encoding":"dynamic_array","label":"struct Types.OutputProposal[]","numberOfBytes":"32","base":"t_struct(OutputProposal)104307_storage"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_struct(OutputProposal)104307_storage":{"encoding":"inplace","label":"struct Types.OutputProposal","numberOfBytes":"64","members":[{"astId":104302,"contract":"src/L1/L2OutputOracle.sol:L2OutputOracle","label":"outputRoot","offset":0,"slot":"0","type":"t_bytes32"},{"astId":104304,"contract":"src/L1/L2OutputOracle.sol:L2OutputOracle","label":"timestamp","offset":0,"slot":"1","type":"t_uint128"},{"astId":104306,"contract":"src/L1/L2OutputOracle.sol:L2OutputOracle","label":"l2BlockNumber","offset":16,"slot":"1","type":"t_uint128"}]},"t_uint128":{"encoding":"inplace","label":"uint128","numberOfBytes":"16"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"version":1,"kind":"user","methods":{"CHALLENGER()":{"notice":"Getter for the challenger address.         Public getter is legacy and will be removed in the future. Use `challenger` instead."},"FINALIZATION_PERIOD_SECONDS()":{"notice":"Getter for the finalizationPeriodSeconds.         Public getter is legacy and will be removed in the future. Use `finalizationPeriodSeconds` instead."},"L2_BLOCK_TIME()":{"notice":"Getter for the l2BlockTime.         Public getter is legacy and will be removed in the future. Use `l2BlockTime` instead."},"PROPOSER()":{"notice":"Getter for the proposer address.         Public getter is legacy and will be removed in the future. Use `proposer` instead."},"SUBMISSION_INTERVAL()":{"notice":"Getter for the submissionInterval.         Public getter is legacy and will be removed in the future. Use `submissionInterval` instead."},"challenger()":{"notice":"The address of the challenger. Can be updated via upgrade."},"computeL2Timestamp(uint256)":{"notice":"Returns the L2 timestamp corresponding to a given L2 block number."},"constructor":{"notice":"Constructs the L2OutputOracle contract. Initializes variables to the same values as         in the getting-started config."},"deleteL2Outputs(uint256)":{"notice":"Deletes all output proposals after and including the proposal that corresponds to         the given output index. Only the challenger address can delete outputs."},"finalizationPeriodSeconds()":{"notice":"The minimum time (in seconds) that must elapse before a withdrawal can be finalized."},"getL2Output(uint256)":{"notice":"Returns an output by index. Needed to return a struct instead of a tuple."},"getL2OutputAfter(uint256)":{"notice":"Returns the L2 output proposal that checkpoints a given L2 block number.         Uses a binary search to find the first output greater than or equal to the given         block."},"getL2OutputIndexAfter(uint256)":{"notice":"Returns the index of the L2 output that checkpoints a given L2 block number.         Uses a binary search to find the first output greater than or equal to the given         block."},"initialize(uint256,uint256,uint256,uint256,address,address,uint256)":{"notice":"Initializer."},"l2BlockTime()":{"notice":"The time between L2 blocks in seconds. Once set, this value MUST NOT be modified."},"latestBlockNumber()":{"notice":"Returns the block number of the latest submitted L2 output proposal.         If no proposals been submitted yet then this function will return the starting         block number."},"latestOutputIndex()":{"notice":"Returns the number of outputs that have been proposed.         Will revert if no outputs have been proposed yet."},"nextBlockNumber()":{"notice":"Computes the block number of the next L2 block that needs to be checkpointed."},"nextOutputIndex()":{"notice":"Returns the index of the next output to be proposed."},"proposeL2Output(bytes32,uint256,bytes32,uint256)":{"notice":"Accepts an outputRoot and the timestamp of the corresponding L2 block.         The timestamp must be equal to the current value returned by `nextTimestamp()` in         order to be accepted. This function may only be called by the Proposer."},"proposer()":{"notice":"The address of the proposer. Can be updated via upgrade."},"startingBlockNumber()":{"notice":"The number of the first L2 block recorded in this contract."},"startingTimestamp()":{"notice":"The timestamp of the first L2 block recorded in this contract."},"submissionInterval()":{"notice":"The interval in L2 blocks at which checkpoints must be submitted."},"version()":{"notice":"Semantic version."}},"events":{"OutputProposed(bytes32,uint256,uint256,uint256)":{"notice":"Emitted when an output is proposed."},"OutputsDeleted(uint256,uint256)":{"notice":"Emitted when outputs are deleted."}},"notice":"The L2OutputOracle contains an array of L2 state outputs, where each output is a         commitment to the state of the L2 chain. Other contracts like the OptimismPortal use         these outputs to verify information about the state of L2."},"devdoc":{"version":1,"kind":"dev","methods":{"CHALLENGER()":{"returns":{"_0":"Address of the challenger."}},"FINALIZATION_PERIOD_SECONDS()":{"returns":{"_0":"Finalization period in seconds."}},"L2_BLOCK_TIME()":{"returns":{"_0":"L2 block time."}},"PROPOSER()":{"returns":{"_0":"Address of the proposer."}},"SUBMISSION_INTERVAL()":{"returns":{"_0":"Submission interval."}},"computeL2Timestamp(uint256)":{"params":{"_l2BlockNumber":"The L2 block number of the target block."},"returns":{"_0":"L2 timestamp of the given block."}},"deleteL2Outputs(uint256)":{"params":{"_l2OutputIndex":"Index of the first L2 output to be deleted.                       All outputs after this output will also be deleted."}},"getL2Output(uint256)":{"params":{"_l2OutputIndex":"Index of the output to return."},"returns":{"_0":"The output at the given index."}},"getL2OutputAfter(uint256)":{"params":{"_l2BlockNumber":"L2 block number to find a checkpoint for."},"returns":{"_0":"First checkpoint that commits to the given L2 block number."}},"getL2OutputIndexAfter(uint256)":{"params":{"_l2BlockNumber":"L2 block number to find a checkpoint for."},"returns":{"_0":"Index of the first checkpoint that commits to the given L2 block number."}},"initialize(uint256,uint256,uint256,uint256,address,address,uint256)":{"params":{"_challenger":"The address of the challenger.","_finalizationPeriodSeconds":"The minimum time (in seconds) that must elapse before a withdrawal                                   can be finalized.","_l2BlockTime":"The time per L2 block, in seconds.","_proposer":"The address of the proposer.","_startingBlockNumber":"The number of the first L2 block.","_startingTimestamp":"The timestamp of the first L2 block.","_submissionInterval":"Interval in blocks at which checkpoints must be submitted."}},"latestBlockNumber()":{"returns":{"_0":"Latest submitted L2 block number."}},"latestOutputIndex()":{"returns":{"_0":"The number of outputs that have been proposed."}},"nextBlockNumber()":{"returns":{"_0":"Next L2 block number."}},"nextOutputIndex()":{"returns":{"_0":"The index of the next output to be proposed."}},"proposeL2Output(bytes32,uint256,bytes32,uint256)":{"params":{"_l1BlockHash":"A block hash which must be included in the current chain.","_l1BlockNumber":"The block number with the specified block hash.","_l2BlockNumber":"The L2 block number that resulted in _outputRoot.","_outputRoot":"The L2 output of the checkpoint block."}}},"events":{"OutputProposed(bytes32,uint256,uint256,uint256)":{"params":{"l1Timestamp":"The L1 timestamp when proposed.","l2BlockNumber":"The L2 block number of the output root.","l2OutputIndex":"The index of the output in the l2Outputs array.","outputRoot":"The output root."}},"OutputsDeleted(uint256,uint256)":{"params":{"newNextOutputIndex":"Next L2 output index after the deletion.","prevNextOutputIndex":"Next L2 output index before the deletion."}}}},"ast":{"absolutePath":"src/L1/L2OutputOracle.sol","id":86436,"exportedSymbols":{"Constants":[103096],"ISemver":[109417],"Initializable":[49678],"L2OutputOracle":[86435],"Types":[104349]},"nodeType":"SourceUnit","src":"32:14005:133","nodes":[{"id":85923,"nodeType":"PragmaDirective","src":"32:23:133","nodes":[],"literals":["solidity","0.8",".15"]},{"id":85925,"nodeType":"ImportDirective","src":"57:86:133","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":86436,"sourceUnit":49679,"symbolAliases":[{"foreign":{"id":85924,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49678,"src":"66:13:133","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":85927,"nodeType":"ImportDirective","src":"144:52:133","nodes":[],"absolutePath":"src/universal/ISemver.sol","file":"src/universal/ISemver.sol","nameLocation":"-1:-1:-1","scope":86436,"sourceUnit":109418,"symbolAliases":[{"foreign":{"id":85926,"name":"ISemver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109417,"src":"153:7:133","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":85929,"nodeType":"ImportDirective","src":"197:48:133","nodes":[],"absolutePath":"src/libraries/Types.sol","file":"src/libraries/Types.sol","nameLocation":"-1:-1:-1","scope":86436,"sourceUnit":104350,"symbolAliases":[{"foreign":{"id":85928,"name":"Types","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":104349,"src":"206:5:133","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":85931,"nodeType":"ImportDirective","src":"246:56:133","nodes":[],"absolutePath":"src/libraries/Constants.sol","file":"src/libraries/Constants.sol","nameLocation":"-1:-1:-1","scope":86436,"sourceUnit":103097,"symbolAliases":[{"foreign":{"id":85930,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":103096,"src":"255:9:133","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":86435,"nodeType":"ContractDefinition","src":"611:13425:133","nodes":[{"id":85939,"nodeType":"VariableDeclaration","src":"743:34:133","nodes":[],"constant":false,"documentation":{"id":85937,"nodeType":"StructuredDocumentation","src":"667:71:133","text":"@notice The number of the first L2 block recorded in this contract."},"functionSelector":"70872aa5","mutability":"mutable","name":"startingBlockNumber","nameLocation":"758:19:133","scope":86435,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":85938,"name":"uint256","nodeType":"ElementaryTypeName","src":"743:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":85942,"nodeType":"VariableDeclaration","src":"863:32:133","nodes":[],"constant":false,"documentation":{"id":85940,"nodeType":"StructuredDocumentation","src":"784:74:133","text":"@notice The timestamp of the first L2 block recorded in this contract."},"functionSelector":"88786272","mutability":"mutable","name":"startingTimestamp","nameLocation":"878:17:133","scope":86435,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":85941,"name":"uint256","nodeType":"ElementaryTypeName","src":"863:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":85947,"nodeType":"VariableDeclaration","src":"951:41:133","nodes":[],"constant":false,"documentation":{"id":85943,"nodeType":"StructuredDocumentation","src":"902:44:133","text":"@notice An array of L2 output proposals."},"mutability":"mutable","name":"l2Outputs","nameLocation":"983:9:133","scope":86435,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage","typeString":"struct Types.OutputProposal[]"},"typeName":{"baseType":{"id":85945,"nodeType":"UserDefinedTypeName","pathNode":{"id":85944,"name":"Types.OutputProposal","nodeType":"IdentifierPath","referencedDeclaration":104307,"src":"951:20:133"},"referencedDeclaration":104307,"src":"951:20:133","typeDescriptions":{"typeIdentifier":"t_struct$_OutputProposal_$104307_storage_ptr","typeString":"struct Types.OutputProposal"}},"id":85946,"nodeType":"ArrayTypeName","src":"951:22:133","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage_ptr","typeString":"struct Types.OutputProposal[]"}},"visibility":"internal"},{"id":85950,"nodeType":"VariableDeclaration","src":"1114:33:133","nodes":[],"constant":false,"documentation":{"id":85948,"nodeType":"StructuredDocumentation","src":"999:110:133","text":"@notice The interval in L2 blocks at which checkpoints must be submitted.\n @custom:network-specific"},"functionSelector":"e1a41bcf","mutability":"mutable","name":"submissionInterval","nameLocation":"1129:18:133","scope":86435,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":85949,"name":"uint256","nodeType":"ElementaryTypeName","src":"1114:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":85953,"nodeType":"VariableDeclaration","src":"1285:26:133","nodes":[],"constant":false,"documentation":{"id":85951,"nodeType":"StructuredDocumentation","src":"1154:126:133","text":"@notice The time between L2 blocks in seconds. Once set, this value MUST NOT be modified.\n @custom:network-specific"},"functionSelector":"93991af3","mutability":"mutable","name":"l2BlockTime","nameLocation":"1300:11:133","scope":86435,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":85952,"name":"uint256","nodeType":"ElementaryTypeName","src":"1285:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":85956,"nodeType":"VariableDeclaration","src":"1426:25:133","nodes":[],"constant":false,"documentation":{"id":85954,"nodeType":"StructuredDocumentation","src":"1318:103:133","text":"@notice The address of the challenger. Can be updated via upgrade.\n @custom:network-specific"},"functionSelector":"534db0e2","mutability":"mutable","name":"challenger","nameLocation":"1441:10:133","scope":86435,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85955,"name":"address","nodeType":"ElementaryTypeName","src":"1426:7:133","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":85959,"nodeType":"VariableDeclaration","src":"1564:23:133","nodes":[],"constant":false,"documentation":{"id":85957,"nodeType":"StructuredDocumentation","src":"1458:101:133","text":"@notice The address of the proposer. Can be updated via upgrade.\n @custom:network-specific"},"functionSelector":"a8e4fb90","mutability":"mutable","name":"proposer","nameLocation":"1579:8:133","scope":86435,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85958,"name":"address","nodeType":"ElementaryTypeName","src":"1564:7:133","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":85962,"nodeType":"VariableDeclaration","src":"1728:40:133","nodes":[],"constant":false,"documentation":{"id":85960,"nodeType":"StructuredDocumentation","src":"1594:129:133","text":"@notice The minimum time (in seconds) that must elapse before a withdrawal can be finalized.\n @custom:network-specific"},"functionSelector":"ce5db8d6","mutability":"mutable","name":"finalizationPeriodSeconds","nameLocation":"1743:25:133","scope":86435,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":85961,"name":"uint256","nodeType":"ElementaryTypeName","src":"1728:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":85973,"nodeType":"EventDefinition","src":"2080:146:133","nodes":[],"anonymous":false,"documentation":{"id":85963,"nodeType":"StructuredDocumentation","src":"1775:300:133","text":"@notice Emitted when an output is proposed.\n @param outputRoot    The output root.\n @param l2OutputIndex The index of the output in the l2Outputs array.\n @param l2BlockNumber The L2 block number of the output root.\n @param l1Timestamp   The L1 timestamp when proposed."},"eventSelector":"a7aaf2512769da4e444e3de247be2564225c2e7a8f74cfe528e46e17d24868e2","name":"OutputProposed","nameLocation":"2086:14:133","parameters":{"id":85972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":85965,"indexed":true,"mutability":"mutable","name":"outputRoot","nameLocation":"2126:10:133","nodeType":"VariableDeclaration","scope":85973,"src":"2110:26:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":85964,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2110:7:133","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":85967,"indexed":true,"mutability":"mutable","name":"l2OutputIndex","nameLocation":"2154:13:133","nodeType":"VariableDeclaration","scope":85973,"src":"2138:29:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":85966,"name":"uint256","nodeType":"ElementaryTypeName","src":"2138:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":85969,"indexed":true,"mutability":"mutable","name":"l2BlockNumber","nameLocation":"2185:13:133","nodeType":"VariableDeclaration","scope":85973,"src":"2169:29:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":85968,"name":"uint256","nodeType":"ElementaryTypeName","src":"2169:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":85971,"indexed":false,"mutability":"mutable","name":"l1Timestamp","nameLocation":"2208:11:133","nodeType":"VariableDeclaration","scope":85973,"src":"2200:19:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":85970,"name":"uint256","nodeType":"ElementaryTypeName","src":"2200:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2100:125:133"}},{"id":85980,"nodeType":"EventDefinition","src":"2435:94:133","nodes":[],"anonymous":false,"documentation":{"id":85974,"nodeType":"StructuredDocumentation","src":"2232:198:133","text":"@notice Emitted when outputs are deleted.\n @param prevNextOutputIndex Next L2 output index before the deletion.\n @param newNextOutputIndex  Next L2 output index after the deletion."},"eventSelector":"4ee37ac2c786ec85e87592d3c5c8a1dd66f8496dda3f125d9ea8ca5f657629b6","name":"OutputsDeleted","nameLocation":"2441:14:133","parameters":{"id":85979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":85976,"indexed":true,"mutability":"mutable","name":"prevNextOutputIndex","nameLocation":"2472:19:133","nodeType":"VariableDeclaration","scope":85980,"src":"2456:35:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":85975,"name":"uint256","nodeType":"ElementaryTypeName","src":"2456:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":85978,"indexed":true,"mutability":"mutable","name":"newNextOutputIndex","nameLocation":"2509:18:133","nodeType":"VariableDeclaration","scope":85980,"src":"2493:34:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":85977,"name":"uint256","nodeType":"ElementaryTypeName","src":"2493:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2455:73:133"}},{"id":85984,"nodeType":"VariableDeclaration","src":"2598:40:133","nodes":[],"baseFunctions":[109416],"constant":true,"documentation":{"id":85981,"nodeType":"StructuredDocumentation","src":"2535:58:133","text":"@notice Semantic version.\n @custom:semver 1.8.0"},"functionSelector":"54fd4d50","mutability":"constant","name":"version","nameLocation":"2621:7:133","scope":86435,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":85982,"name":"string","nodeType":"ElementaryTypeName","src":"2598:6:133","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"312e382e30","id":85983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2631:7:133","typeDescriptions":{"typeIdentifier":"t_stringliteral_cd02a4b5da981b4c403351c949b2ca4bdb2fb4b72b50891f7eb106d3eb7049e9","typeString":"literal_string \"1.8.0\""},"value":"1.8.0"},"visibility":"public"},{"id":86005,"nodeType":"FunctionDefinition","src":"2792:305:133","nodes":[],"body":{"id":86004,"nodeType":"Block","src":"2806:291:133","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"31","id":85989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2862:1:133","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"hexValue":"31","id":85990,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2891:1:133","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"hexValue":"30","id":85991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2928:1:133","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":85992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2963:1:133","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"arguments":[{"hexValue":"30","id":85995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2997:1:133","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":85994,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2989:7:133","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":85993,"name":"address","nodeType":"ElementaryTypeName","src":"2989:7:133","typeDescriptions":{}}},"id":85996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2989:10:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":85999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3034:1:133","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":85998,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3026:7:133","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":85997,"name":"address","nodeType":"ElementaryTypeName","src":"3026:7:133","typeDescriptions":{}}},"id":86000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3026:10:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":86001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3078:1:133","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":85988,"name":"initialize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86076,"src":"2816:10:133","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256,uint256,address,address,uint256)"}},"id":86002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":["_submissionInterval","_l2BlockTime","_startingBlockNumber","_startingTimestamp","_proposer","_challenger","_finalizationPeriodSeconds"],"nodeType":"FunctionCall","src":"2816:274:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86003,"nodeType":"ExpressionStatement","src":"2816:274:133"}]},"documentation":{"id":85985,"nodeType":"StructuredDocumentation","src":"2645:142:133","text":"@notice Constructs the L2OutputOracle contract. Initializes variables to the same values as\n         in the getting-started config."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":85986,"nodeType":"ParameterList","parameters":[],"src":"2803:2:133"},"returnParameters":{"id":85987,"nodeType":"ParameterList","parameters":[],"src":"2806:0:133"},"scope":86435,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":86076,"nodeType":"FunctionDefinition","src":"3742:985:133","nodes":[],"body":{"id":86075,"nodeType":"Block","src":"4048:679:133","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":86026,"name":"_submissionInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86008,"src":"4066:19:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":86027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4088:1:133","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4066:23:133","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c324f75747075744f7261636c653a207375626d697373696f6e20696e74657276616c206d7573742062652067726561746572207468616e2030","id":86029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4091:60:133","typeDescriptions":{"typeIdentifier":"t_stringliteral_a22226fa4dda9c6c644d22b26affbedef5d3fc150a8b26008a6baa26d85d543f","typeString":"literal_string \"L2OutputOracle: submission interval must be greater than 0\""},"value":"L2OutputOracle: submission interval must be greater than 0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a22226fa4dda9c6c644d22b26affbedef5d3fc150a8b26008a6baa26d85d543f","typeString":"literal_string \"L2OutputOracle: submission interval must be greater than 0\""}],"id":86025,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4058:7:133","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":86030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4058:94:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86031,"nodeType":"ExpressionStatement","src":"4058:94:133"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":86033,"name":"_l2BlockTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86010,"src":"4170:12:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":86034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4185:1:133","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4170:16:133","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c324f75747075744f7261636c653a204c3220626c6f636b2074696d65206d7573742062652067726561746572207468616e2030","id":86036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4188:54:133","typeDescriptions":{"typeIdentifier":"t_stringliteral_ac9ff37c1a6529ab3b67321d57550ba5021740edf6aa58a5708726b9aa5179b7","typeString":"literal_string \"L2OutputOracle: L2 block time must be greater than 0\""},"value":"L2OutputOracle: L2 block time must be greater than 0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ac9ff37c1a6529ab3b67321d57550ba5021740edf6aa58a5708726b9aa5179b7","typeString":"literal_string \"L2OutputOracle: L2 block time must be greater than 0\""}],"id":86032,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4162:7:133","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":86037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4162:81:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86038,"nodeType":"ExpressionStatement","src":"4162:81:133"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":86040,"name":"_startingTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86014,"src":"4274:18:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":86041,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4296:5:133","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":86042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"4296:15:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4274:37:133","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c324f75747075744f7261636c653a207374617274696e67204c322074696d657374616d70206d757374206265206c657373207468616e2063757272656e742074696d65","id":86044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4325:70:133","typeDescriptions":{"typeIdentifier":"t_stringliteral_898fd7ed8708de35483db60bd4b962ea9e8aa9058ba6455714580e35a9e067a7","typeString":"literal_string \"L2OutputOracle: starting L2 timestamp must be less than current time\""},"value":"L2OutputOracle: starting L2 timestamp must be less than current time"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_898fd7ed8708de35483db60bd4b962ea9e8aa9058ba6455714580e35a9e067a7","typeString":"literal_string \"L2OutputOracle: starting L2 timestamp must be less than current time\""}],"id":86039,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4253:7:133","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":86045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4253:152:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86046,"nodeType":"ExpressionStatement","src":"4253:152:133"},{"expression":{"id":86049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":86047,"name":"submissionInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85950,"src":"4416:18:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":86048,"name":"_submissionInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86008,"src":"4437:19:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4416:40:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":86050,"nodeType":"ExpressionStatement","src":"4416:40:133"},{"expression":{"id":86053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":86051,"name":"l2BlockTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85953,"src":"4466:11:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":86052,"name":"_l2BlockTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86010,"src":"4480:12:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4466:26:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":86054,"nodeType":"ExpressionStatement","src":"4466:26:133"},{"expression":{"id":86057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":86055,"name":"startingBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85939,"src":"4502:19:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":86056,"name":"_startingBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86012,"src":"4524:20:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4502:42:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":86058,"nodeType":"ExpressionStatement","src":"4502:42:133"},{"expression":{"id":86061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":86059,"name":"startingTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85942,"src":"4554:17:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":86060,"name":"_startingTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86014,"src":"4574:18:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4554:38:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":86062,"nodeType":"ExpressionStatement","src":"4554:38:133"},{"expression":{"id":86065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":86063,"name":"proposer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85959,"src":"4602:8:133","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":86064,"name":"_proposer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86016,"src":"4613:9:133","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4602:20:133","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":86066,"nodeType":"ExpressionStatement","src":"4602:20:133"},{"expression":{"id":86069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":86067,"name":"challenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85956,"src":"4632:10:133","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":86068,"name":"_challenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86018,"src":"4645:11:133","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4632:24:133","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":86070,"nodeType":"ExpressionStatement","src":"4632:24:133"},{"expression":{"id":86073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":86071,"name":"finalizationPeriodSeconds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85962,"src":"4666:25:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":86072,"name":"_finalizationPeriodSeconds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86020,"src":"4694:26:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4666:54:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":86074,"nodeType":"ExpressionStatement","src":"4666:54:133"}]},"documentation":{"id":86006,"nodeType":"StructuredDocumentation","src":"3103:634:133","text":"@notice Initializer.\n @param _submissionInterval  Interval in blocks at which checkpoints must be submitted.\n @param _l2BlockTime         The time per L2 block, in seconds.\n @param _startingBlockNumber The number of the first L2 block.\n @param _startingTimestamp   The timestamp of the first L2 block.\n @param _proposer            The address of the proposer.\n @param _challenger          The address of the challenger.\n @param _finalizationPeriodSeconds The minimum time (in seconds) that must elapse before a withdrawal\n                                   can be finalized."},"functionSelector":"1c89c97d","implemented":true,"kind":"function","modifiers":[{"id":86023,"kind":"modifierInvocation","modifierName":{"id":86022,"name":"initializer","nodeType":"IdentifierPath","referencedDeclaration":49598,"src":"4032:11:133"},"nodeType":"ModifierInvocation","src":"4032:11:133"}],"name":"initialize","nameLocation":"3751:10:133","parameters":{"id":86021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86008,"mutability":"mutable","name":"_submissionInterval","nameLocation":"3779:19:133","nodeType":"VariableDeclaration","scope":86076,"src":"3771:27:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86007,"name":"uint256","nodeType":"ElementaryTypeName","src":"3771:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":86010,"mutability":"mutable","name":"_l2BlockTime","nameLocation":"3816:12:133","nodeType":"VariableDeclaration","scope":86076,"src":"3808:20:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86009,"name":"uint256","nodeType":"ElementaryTypeName","src":"3808:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":86012,"mutability":"mutable","name":"_startingBlockNumber","nameLocation":"3846:20:133","nodeType":"VariableDeclaration","scope":86076,"src":"3838:28:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86011,"name":"uint256","nodeType":"ElementaryTypeName","src":"3838:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":86014,"mutability":"mutable","name":"_startingTimestamp","nameLocation":"3884:18:133","nodeType":"VariableDeclaration","scope":86076,"src":"3876:26:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86013,"name":"uint256","nodeType":"ElementaryTypeName","src":"3876:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":86016,"mutability":"mutable","name":"_proposer","nameLocation":"3920:9:133","nodeType":"VariableDeclaration","scope":86076,"src":"3912:17:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":86015,"name":"address","nodeType":"ElementaryTypeName","src":"3912:7:133","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":86018,"mutability":"mutable","name":"_challenger","nameLocation":"3947:11:133","nodeType":"VariableDeclaration","scope":86076,"src":"3939:19:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":86017,"name":"address","nodeType":"ElementaryTypeName","src":"3939:7:133","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":86020,"mutability":"mutable","name":"_finalizationPeriodSeconds","nameLocation":"3976:26:133","nodeType":"VariableDeclaration","scope":86076,"src":"3968:34:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86019,"name":"uint256","nodeType":"ElementaryTypeName","src":"3968:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3761:247:133"},"returnParameters":{"id":86024,"nodeType":"ParameterList","parameters":[],"src":"4048:0:133"},"scope":86435,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":86085,"nodeType":"FunctionDefinition","src":"4953:105:133","nodes":[],"body":{"id":86084,"nodeType":"Block","src":"5016:42:133","nodes":[],"statements":[{"expression":{"id":86082,"name":"submissionInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85950,"src":"5033:18:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":86081,"id":86083,"nodeType":"Return","src":"5026:25:133"}]},"documentation":{"id":86077,"nodeType":"StructuredDocumentation","src":"4733:215:133","text":"@notice Getter for the submissionInterval.\n         Public getter is legacy and will be removed in the future. Use `submissionInterval` instead.\n @return Submission interval.\n @custom:legacy"},"functionSelector":"529933df","implemented":true,"kind":"function","modifiers":[],"name":"SUBMISSION_INTERVAL","nameLocation":"4962:19:133","parameters":{"id":86078,"nodeType":"ParameterList","parameters":[],"src":"4981:2:133"},"returnParameters":{"id":86081,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86080,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":86085,"src":"5007:7:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86079,"name":"uint256","nodeType":"ElementaryTypeName","src":"5007:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5006:9:133"},"scope":86435,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":86094,"nodeType":"FunctionDefinition","src":"5264:92:133","nodes":[],"body":{"id":86093,"nodeType":"Block","src":"5321:35:133","nodes":[],"statements":[{"expression":{"id":86091,"name":"l2BlockTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85953,"src":"5338:11:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":86090,"id":86092,"nodeType":"Return","src":"5331:18:133"}]},"documentation":{"id":86086,"nodeType":"StructuredDocumentation","src":"5064:195:133","text":"@notice Getter for the l2BlockTime.\n         Public getter is legacy and will be removed in the future. Use `l2BlockTime` instead.\n @return L2 block time.\n @custom:legacy"},"functionSelector":"002134cc","implemented":true,"kind":"function","modifiers":[],"name":"L2_BLOCK_TIME","nameLocation":"5273:13:133","parameters":{"id":86087,"nodeType":"ParameterList","parameters":[],"src":"5286:2:133"},"returnParameters":{"id":86090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86089,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":86094,"src":"5312:7:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86088,"name":"uint256","nodeType":"ElementaryTypeName","src":"5312:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5311:9:133"},"scope":86435,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":86103,"nodeType":"FunctionDefinition","src":"5580:88:133","nodes":[],"body":{"id":86102,"nodeType":"Block","src":"5634:34:133","nodes":[],"statements":[{"expression":{"id":86100,"name":"challenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85956,"src":"5651:10:133","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":86099,"id":86101,"nodeType":"Return","src":"5644:17:133"}]},"documentation":{"id":86095,"nodeType":"StructuredDocumentation","src":"5362:213:133","text":"@notice Getter for the challenger address.\n         Public getter is legacy and will be removed in the future. Use `challenger` instead.\n @return Address of the challenger.\n @custom:legacy"},"functionSelector":"6b4d98dd","implemented":true,"kind":"function","modifiers":[],"name":"CHALLENGER","nameLocation":"5589:10:133","parameters":{"id":86096,"nodeType":"ParameterList","parameters":[],"src":"5599:2:133"},"returnParameters":{"id":86099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86098,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":86103,"src":"5625:7:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":86097,"name":"address","nodeType":"ElementaryTypeName","src":"5625:7:133","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5624:9:133"},"scope":86435,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":86112,"nodeType":"FunctionDefinition","src":"5886:84:133","nodes":[],"body":{"id":86111,"nodeType":"Block","src":"5938:32:133","nodes":[],"statements":[{"expression":{"id":86109,"name":"proposer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85959,"src":"5955:8:133","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":86108,"id":86110,"nodeType":"Return","src":"5948:15:133"}]},"documentation":{"id":86104,"nodeType":"StructuredDocumentation","src":"5674:207:133","text":"@notice Getter for the proposer address.\n         Public getter is legacy and will be removed in the future. Use `proposer` instead.\n @return Address of the proposer.\n @custom:legacy"},"functionSelector":"bffa7f0f","implemented":true,"kind":"function","modifiers":[],"name":"PROPOSER","nameLocation":"5895:8:133","parameters":{"id":86105,"nodeType":"ParameterList","parameters":[],"src":"5903:2:133"},"returnParameters":{"id":86108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86107,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":86112,"src":"5929:7:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":86106,"name":"address","nodeType":"ElementaryTypeName","src":"5929:7:133","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5928:9:133"},"scope":86435,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":86121,"nodeType":"FunctionDefinition","src":"6221:120:133","nodes":[],"body":{"id":86120,"nodeType":"Block","src":"6292:49:133","nodes":[],"statements":[{"expression":{"id":86118,"name":"finalizationPeriodSeconds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85962,"src":"6309:25:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":86117,"id":86119,"nodeType":"Return","src":"6302:32:133"}]},"documentation":{"id":86113,"nodeType":"StructuredDocumentation","src":"5976:240:133","text":"@notice Getter for the finalizationPeriodSeconds.\n         Public getter is legacy and will be removed in the future. Use `finalizationPeriodSeconds` instead.\n @return Finalization period in seconds.\n @custom:legacy"},"functionSelector":"f4daa291","implemented":true,"kind":"function","modifiers":[],"name":"FINALIZATION_PERIOD_SECONDS","nameLocation":"6230:27:133","parameters":{"id":86114,"nodeType":"ParameterList","parameters":[],"src":"6257:2:133"},"returnParameters":{"id":86117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86116,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":86121,"src":"6283:7:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86115,"name":"uint256","nodeType":"ElementaryTypeName","src":"6283:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6282:9:133"},"scope":86435,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":86168,"nodeType":"FunctionDefinition","src":"6689:975:133","nodes":[],"body":{"id":86167,"nodeType":"Block","src":"6747:917:133","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":86131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":86128,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6765:3:133","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":86129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"6765:10:133","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":86130,"name":"challenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85956,"src":"6779:10:133","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6765:24:133","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c324f75747075744f7261636c653a206f6e6c7920746865206368616c6c656e67657220616464726573732063616e2064656c657465206f757470757473","id":86132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6791:64:133","typeDescriptions":{"typeIdentifier":"t_stringliteral_73ca084205f86e7b7b010a7bf147aa19f097b7f0a2c7768452f50d69ddf1c8a6","typeString":"literal_string \"L2OutputOracle: only the challenger address can delete outputs\""},"value":"L2OutputOracle: only the challenger address can delete outputs"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_73ca084205f86e7b7b010a7bf147aa19f097b7f0a2c7768452f50d69ddf1c8a6","typeString":"literal_string \"L2OutputOracle: only the challenger address can delete outputs\""}],"id":86127,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6757:7:133","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":86133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6757:99:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86134,"nodeType":"ExpressionStatement","src":"6757:99:133"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":86136,"name":"_l2OutputIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86124,"src":"6957:14:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":86137,"name":"l2Outputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85947,"src":"6974:9:133","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage","typeString":"struct Types.OutputProposal storage ref[] storage ref"}},"id":86138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6974:16:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6957:33:133","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c324f75747075744f7261636c653a2063616e6e6f742064656c657465206f75747075747320616674657220746865206c6174657374206f757470757420696e646578","id":86140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6992:69:133","typeDescriptions":{"typeIdentifier":"t_stringliteral_8fade7eaadcf8920b61cd280bfaf9215de3229fd9b8bc0c114506f50c3323d08","typeString":"literal_string \"L2OutputOracle: cannot delete outputs after the latest output index\""},"value":"L2OutputOracle: cannot delete outputs after the latest output index"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8fade7eaadcf8920b61cd280bfaf9215de3229fd9b8bc0c114506f50c3323d08","typeString":"literal_string \"L2OutputOracle: cannot delete outputs after the latest output index\""}],"id":86135,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6936:7:133","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":86141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6936:135:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86142,"nodeType":"ExpressionStatement","src":"6936:135:133"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":86144,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"7182:5:133","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":86145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"7182:15:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"baseExpression":{"id":86146,"name":"l2Outputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85947,"src":"7200:9:133","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage","typeString":"struct Types.OutputProposal storage ref[] storage ref"}},"id":86148,"indexExpression":{"id":86147,"name":"_l2OutputIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86124,"src":"7210:14:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7200:25:133","typeDescriptions":{"typeIdentifier":"t_struct$_OutputProposal_$104307_storage","typeString":"struct Types.OutputProposal storage ref"}},"id":86149,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":104304,"src":"7200:35:133","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"7182:53:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":86151,"name":"finalizationPeriodSeconds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85962,"src":"7238:25:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7182:81:133","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c324f75747075744f7261636c653a2063616e6e6f742064656c657465206f7574707574732074686174206861766520616c7265616479206265656e2066696e616c697a6564","id":86153,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7277:72:133","typeDescriptions":{"typeIdentifier":"t_stringliteral_d750945a6d3cdf9f7770d0a5d95aa9b56f37a0ad47759ca246a1b772fdac6c07","typeString":"literal_string \"L2OutputOracle: cannot delete outputs that have already been finalized\""},"value":"L2OutputOracle: cannot delete outputs that have already been finalized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d750945a6d3cdf9f7770d0a5d95aa9b56f37a0ad47759ca246a1b772fdac6c07","typeString":"literal_string \"L2OutputOracle: cannot delete outputs that have already been finalized\""}],"id":86143,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7161:7:133","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":86154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7161:198:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86155,"nodeType":"ExpressionStatement","src":"7161:198:133"},{"assignments":[86157],"declarations":[{"constant":false,"id":86157,"mutability":"mutable","name":"prevNextL2OutputIndex","nameLocation":"7378:21:133","nodeType":"VariableDeclaration","scope":86167,"src":"7370:29:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86156,"name":"uint256","nodeType":"ElementaryTypeName","src":"7370:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":86160,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":86158,"name":"nextOutputIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86382,"src":"7402:15:133","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":86159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7402:17:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7370:49:133"},{"AST":{"nodeType":"YulBlock","src":"7527:62:133","statements":[{"expression":{"arguments":[{"name":"l2Outputs.slot","nodeType":"YulIdentifier","src":"7548:14:133"},{"name":"_l2OutputIndex","nodeType":"YulIdentifier","src":"7564:14:133"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"7541:6:133"},"nodeType":"YulFunctionCall","src":"7541:38:133"},"nodeType":"YulExpressionStatement","src":"7541:38:133"}]},"evmVersion":"london","externalReferences":[{"declaration":86124,"isOffset":false,"isSlot":false,"src":"7564:14:133","valueSize":1},{"declaration":85947,"isOffset":false,"isSlot":true,"src":"7548:14:133","suffix":"slot","valueSize":1}],"id":86161,"nodeType":"InlineAssembly","src":"7518:71:133"},{"eventCall":{"arguments":[{"id":86163,"name":"prevNextL2OutputIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86157,"src":"7619:21:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":86164,"name":"_l2OutputIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86124,"src":"7642:14:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":86162,"name":"OutputsDeleted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85980,"src":"7604:14:133","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":86165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7604:53:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86166,"nodeType":"EmitStatement","src":"7599:58:133"}]},"documentation":{"id":86122,"nodeType":"StructuredDocumentation","src":"6347:337:133","text":"@notice Deletes all output proposals after and including the proposal that corresponds to\n         the given output index. Only the challenger address can delete outputs.\n @param _l2OutputIndex Index of the first L2 output to be deleted.\n                       All outputs after this output will also be deleted."},"functionSelector":"89c44cbb","implemented":true,"kind":"function","modifiers":[],"name":"deleteL2Outputs","nameLocation":"6698:15:133","parameters":{"id":86125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86124,"mutability":"mutable","name":"_l2OutputIndex","nameLocation":"6722:14:133","nodeType":"VariableDeclaration","scope":86168,"src":"6714:22:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86123,"name":"uint256","nodeType":"ElementaryTypeName","src":"6714:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6713:24:133"},"returnParameters":{"id":86126,"nodeType":"ParameterList","parameters":[],"src":"6747:0:133"},"scope":86435,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":86261,"nodeType":"FunctionDefinition","src":"8258:1981:133","nodes":[],"body":{"id":86260,"nodeType":"Block","src":"8449:1790:133","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":86184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":86181,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8467:3:133","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":86182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"8467:10:133","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":86183,"name":"proposer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85959,"src":"8481:8:133","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8467:22:133","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c324f75747075744f7261636c653a206f6e6c79207468652070726f706f73657220616464726573732063616e2070726f706f7365206e6577206f757470757473","id":86185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8491:67:133","typeDescriptions":{"typeIdentifier":"t_stringliteral_9f1c67e2dc62ce3502755d353f72e304832f39c730ef77e02614e374f1fb53d3","typeString":"literal_string \"L2OutputOracle: only the proposer address can propose new outputs\""},"value":"L2OutputOracle: only the proposer address can propose new outputs"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9f1c67e2dc62ce3502755d353f72e304832f39c730ef77e02614e374f1fb53d3","typeString":"literal_string \"L2OutputOracle: only the proposer address can propose new outputs\""}],"id":86180,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8459:7:133","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":86186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8459:100:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86187,"nodeType":"ExpressionStatement","src":"8459:100:133"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":86189,"name":"_l2BlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86173,"src":"8591:14:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":86190,"name":"nextBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86415,"src":"8609:15:133","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":86191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8609:17:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8591:35:133","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c324f75747075744f7261636c653a20626c6f636b206e756d626572206d75737420626520657175616c20746f206e65787420657870656374656420626c6f636b206e756d626572","id":86193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8640:74:133","typeDescriptions":{"typeIdentifier":"t_stringliteral_06e1bf88480451e9a05edd933fbefd888745eeb4cd60fea580144d9699d6c8c6","typeString":"literal_string \"L2OutputOracle: block number must be equal to next expected block number\""},"value":"L2OutputOracle: block number must be equal to next expected block number"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_06e1bf88480451e9a05edd933fbefd888745eeb4cd60fea580144d9699d6c8c6","typeString":"literal_string \"L2OutputOracle: block number must be equal to next expected block number\""}],"id":86188,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8570:7:133","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":86194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8570:154:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86195,"nodeType":"ExpressionStatement","src":"8570:154:133"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":86198,"name":"_l2BlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86173,"src":"8775:14:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":86197,"name":"computeL2Timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86434,"src":"8756:18:133","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":86199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8756:34:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":86200,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"8793:5:133","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":86201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"8793:15:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8756:52:133","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c324f75747075744f7261636c653a2063616e6e6f742070726f706f7365204c32206f757470757420696e2074686520667574757265","id":86203,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8822:56:133","typeDescriptions":{"typeIdentifier":"t_stringliteral_398aa710210a226bac70935aec326d363ca55bd0968a10f188845909ad22cbc6","typeString":"literal_string \"L2OutputOracle: cannot propose L2 output in the future\""},"value":"L2OutputOracle: cannot propose L2 output in the future"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_398aa710210a226bac70935aec326d363ca55bd0968a10f188845909ad22cbc6","typeString":"literal_string \"L2OutputOracle: cannot propose L2 output in the future\""}],"id":86196,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8735:7:133","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":86204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8735:153:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86205,"nodeType":"ExpressionStatement","src":"8735:153:133"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":86212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":86207,"name":"_outputRoot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86171,"src":"8907:11:133","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":86210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8930:1:133","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":86209,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8922:7:133","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":86208,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8922:7:133","typeDescriptions":{}}},"id":86211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8922:10:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"8907:25:133","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c324f75747075744f7261636c653a204c32206f75747075742070726f706f73616c2063616e6e6f7420626520746865207a65726f2068617368","id":86213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8934:60:133","typeDescriptions":{"typeIdentifier":"t_stringliteral_bd49586dceb93dcaff5457c4b7f965cdcdd796092fef31828e5d2ee522ee1ffa","typeString":"literal_string \"L2OutputOracle: L2 output proposal cannot be the zero hash\""},"value":"L2OutputOracle: L2 output proposal cannot be the zero hash"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bd49586dceb93dcaff5457c4b7f965cdcdd796092fef31828e5d2ee522ee1ffa","typeString":"literal_string \"L2OutputOracle: L2 output proposal cannot be the zero hash\""}],"id":86206,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8899:7:133","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":86214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8899:96:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86215,"nodeType":"ExpressionStatement","src":"8899:96:133"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":86221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":86216,"name":"_l1BlockHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86175,"src":"9010:12:133","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":86219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9034:1:133","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":86218,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9026:7:133","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":86217,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9026:7:133","typeDescriptions":{}}},"id":86220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9026:10:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"9010:26:133","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":86232,"nodeType":"IfStatement","src":"9006:897:133","trueBody":{"id":86231,"nodeType":"Block","src":"9038:865:133","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":86227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":86224,"name":"_l1BlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86177,"src":"9754:14:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":86223,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"9744:9:133","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":86225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9744:25:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":86226,"name":"_l1BlockHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86175,"src":"9773:12:133","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"9744:41:133","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c324f75747075744f7261636c653a20626c6f636b206861736820646f6573206e6f74206d617463682074686520686173682061742074686520657870656374656420686569676874","id":86228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9803:75:133","typeDescriptions":{"typeIdentifier":"t_stringliteral_126a709d462b085b243904a4250a7244b58590dd3a6ba08b7c943ca19e9fb452","typeString":"literal_string \"L2OutputOracle: block hash does not match the hash at the expected height\""},"value":"L2OutputOracle: block hash does not match the hash at the expected height"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_126a709d462b085b243904a4250a7244b58590dd3a6ba08b7c943ca19e9fb452","typeString":"literal_string \"L2OutputOracle: block hash does not match the hash at the expected height\""}],"id":86222,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9719:7:133","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":86229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9719:173:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86230,"nodeType":"ExpressionStatement","src":"9719:173:133"}]}},{"eventCall":{"arguments":[{"id":86234,"name":"_outputRoot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86171,"src":"9933:11:133","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":86235,"name":"nextOutputIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86382,"src":"9946:15:133","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":86236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9946:17:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":86237,"name":"_l2BlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86173,"src":"9965:14:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":86238,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"9981:5:133","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":86239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"9981:15:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":86233,"name":"OutputProposed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85973,"src":"9918:14:133","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint256,uint256,uint256)"}},"id":86240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9918:79:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86241,"nodeType":"EmitStatement","src":"9913:84:133"},{"expression":{"arguments":[{"arguments":[{"id":86247,"name":"_outputRoot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86171,"src":"10087:11:133","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"expression":{"id":86250,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"10135:5:133","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":86251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"10135:15:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":86249,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10127:7:133","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":86248,"name":"uint128","nodeType":"ElementaryTypeName","src":"10127:7:133","typeDescriptions":{}}},"id":86252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10127:24:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"arguments":[{"id":86255,"name":"_l2BlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86173,"src":"10192:14:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":86254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10184:7:133","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":86253,"name":"uint128","nodeType":"ElementaryTypeName","src":"10184:7:133","typeDescriptions":{}}},"id":86256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10184:23:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":86245,"name":"Types","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":104349,"src":"10036:5:133","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Types_$104349_$","typeString":"type(library Types)"}},"id":86246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"OutputProposal","nodeType":"MemberAccess","referencedDeclaration":104307,"src":"10036:20:133","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_OutputProposal_$104307_storage_ptr_$","typeString":"type(struct Types.OutputProposal storage pointer)"}},"id":86257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["outputRoot","timestamp","l2BlockNumber"],"nodeType":"FunctionCall","src":"10036:186:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_OutputProposal_$104307_memory_ptr","typeString":"struct Types.OutputProposal memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OutputProposal_$104307_memory_ptr","typeString":"struct Types.OutputProposal memory"}],"expression":{"id":86242,"name":"l2Outputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85947,"src":"10008:9:133","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage","typeString":"struct Types.OutputProposal storage ref[] storage ref"}},"id":86244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","src":"10008:14:133","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage_ptr_$_t_struct$_OutputProposal_$104307_storage_$returns$__$bound_to$_t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage_ptr_$","typeString":"function (struct Types.OutputProposal storage ref[] storage pointer,struct Types.OutputProposal storage ref)"}},"id":86258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10008:224:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86259,"nodeType":"ExpressionStatement","src":"10008:224:133"}]},"documentation":{"id":86169,"nodeType":"StructuredDocumentation","src":"7670:583:133","text":"@notice Accepts an outputRoot and the timestamp of the corresponding L2 block.\n         The timestamp must be equal to the current value returned by `nextTimestamp()` in\n         order to be accepted. This function may only be called by the Proposer.\n @param _outputRoot    The L2 output of the checkpoint block.\n @param _l2BlockNumber The L2 block number that resulted in _outputRoot.\n @param _l1BlockHash   A block hash which must be included in the current chain.\n @param _l1BlockNumber The block number with the specified block hash."},"functionSelector":"9aaab648","implemented":true,"kind":"function","modifiers":[],"name":"proposeL2Output","nameLocation":"8267:15:133","parameters":{"id":86178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86171,"mutability":"mutable","name":"_outputRoot","nameLocation":"8300:11:133","nodeType":"VariableDeclaration","scope":86261,"src":"8292:19:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":86170,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8292:7:133","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":86173,"mutability":"mutable","name":"_l2BlockNumber","nameLocation":"8329:14:133","nodeType":"VariableDeclaration","scope":86261,"src":"8321:22:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86172,"name":"uint256","nodeType":"ElementaryTypeName","src":"8321:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":86175,"mutability":"mutable","name":"_l1BlockHash","nameLocation":"8361:12:133","nodeType":"VariableDeclaration","scope":86261,"src":"8353:20:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":86174,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8353:7:133","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":86177,"mutability":"mutable","name":"_l1BlockNumber","nameLocation":"8391:14:133","nodeType":"VariableDeclaration","scope":86261,"src":"8383:22:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86176,"name":"uint256","nodeType":"ElementaryTypeName","src":"8383:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8282:129:133"},"returnParameters":{"id":86179,"nodeType":"ParameterList","parameters":[],"src":"8449:0:133"},"scope":86435,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":86275,"nodeType":"FunctionDefinition","src":"10443:146:133","nodes":[],"body":{"id":86274,"nodeType":"Block","src":"10540:49:133","nodes":[],"statements":[{"expression":{"baseExpression":{"id":86270,"name":"l2Outputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85947,"src":"10557:9:133","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage","typeString":"struct Types.OutputProposal storage ref[] storage ref"}},"id":86272,"indexExpression":{"id":86271,"name":"_l2OutputIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86264,"src":"10567:14:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10557:25:133","typeDescriptions":{"typeIdentifier":"t_struct$_OutputProposal_$104307_storage","typeString":"struct Types.OutputProposal storage ref"}},"functionReturnParameters":86269,"id":86273,"nodeType":"Return","src":"10550:32:133"}]},"documentation":{"id":86262,"nodeType":"StructuredDocumentation","src":"10245:193:133","text":"@notice Returns an output by index. Needed to return a struct instead of a tuple.\n @param _l2OutputIndex Index of the output to return.\n @return The output at the given index."},"functionSelector":"a25ae557","implemented":true,"kind":"function","modifiers":[],"name":"getL2Output","nameLocation":"10452:11:133","parameters":{"id":86265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86264,"mutability":"mutable","name":"_l2OutputIndex","nameLocation":"10472:14:133","nodeType":"VariableDeclaration","scope":86275,"src":"10464:22:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86263,"name":"uint256","nodeType":"ElementaryTypeName","src":"10464:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10463:24:133"},"returnParameters":{"id":86269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86268,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":86275,"src":"10511:27:133","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_OutputProposal_$104307_memory_ptr","typeString":"struct Types.OutputProposal"},"typeName":{"id":86267,"nodeType":"UserDefinedTypeName","pathNode":{"id":86266,"name":"Types.OutputProposal","nodeType":"IdentifierPath","referencedDeclaration":104307,"src":"10511:20:133"},"referencedDeclaration":104307,"src":"10511:20:133","typeDescriptions":{"typeIdentifier":"t_struct$_OutputProposal_$104307_storage_ptr","typeString":"struct Types.OutputProposal"}},"visibility":"internal"}],"src":"10510:29:133"},"scope":86435,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":86344,"nodeType":"FunctionDefinition","src":"10969:896:133","nodes":[],"body":{"id":86343,"nodeType":"Block","src":"11054:811:133","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":86284,"name":"_l2BlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86278,"src":"11166:14:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":86285,"name":"latestBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86403,"src":"11184:17:133","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":86286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11184:19:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11166:37:133","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c324f75747075744f7261636c653a2063616e6e6f7420676574206f757470757420666f72206120626c6f636b207468617420686173206e6f74206265656e2070726f706f736564","id":86288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11217:74:133","typeDescriptions":{"typeIdentifier":"t_stringliteral_e20eea09cda66a0de8aaee9225052cff8973e85b47dc903dda82ca1d2f5e4f1e","typeString":"literal_string \"L2OutputOracle: cannot get output for a block that has not been proposed\""},"value":"L2OutputOracle: cannot get output for a block that has not been proposed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e20eea09cda66a0de8aaee9225052cff8973e85b47dc903dda82ca1d2f5e4f1e","typeString":"literal_string \"L2OutputOracle: cannot get output for a block that has not been proposed\""}],"id":86283,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11145:7:133","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":86289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11145:156:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86290,"nodeType":"ExpressionStatement","src":"11145:156:133"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":86292,"name":"l2Outputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85947,"src":"11379:9:133","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage","typeString":"struct Types.OutputProposal storage ref[] storage ref"}},"id":86293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"11379:16:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":86294,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11398:1:133","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11379:20:133","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c324f75747075744f7261636c653a2063616e6e6f7420676574206f7574707574206173206e6f206f7574707574732068617665206265656e2070726f706f73656420796574","id":86296,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11401:72:133","typeDescriptions":{"typeIdentifier":"t_stringliteral_80c3451a3ec9750ebb6fb31ae69a5869a904e947867f132ba63cfb294c03b73e","typeString":"literal_string \"L2OutputOracle: cannot get output as no outputs have been proposed yet\""},"value":"L2OutputOracle: cannot get output as no outputs have been proposed yet"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_80c3451a3ec9750ebb6fb31ae69a5869a904e947867f132ba63cfb294c03b73e","typeString":"literal_string \"L2OutputOracle: cannot get output as no outputs have been proposed yet\""}],"id":86291,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11371:7:133","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":86297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11371:103:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86298,"nodeType":"ExpressionStatement","src":"11371:103:133"},{"assignments":[86300],"declarations":[{"constant":false,"id":86300,"mutability":"mutable","name":"lo","nameLocation":"11560:2:133","nodeType":"VariableDeclaration","scope":86343,"src":"11552:10:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86299,"name":"uint256","nodeType":"ElementaryTypeName","src":"11552:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":86302,"initialValue":{"hexValue":"30","id":86301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11565:1:133","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11552:14:133"},{"assignments":[86304],"declarations":[{"constant":false,"id":86304,"mutability":"mutable","name":"hi","nameLocation":"11584:2:133","nodeType":"VariableDeclaration","scope":86343,"src":"11576:10:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86303,"name":"uint256","nodeType":"ElementaryTypeName","src":"11576:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":86307,"initialValue":{"expression":{"id":86305,"name":"l2Outputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85947,"src":"11589:9:133","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage","typeString":"struct Types.OutputProposal storage ref[] storage ref"}},"id":86306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"11589:16:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11576:29:133"},{"body":{"id":86339,"nodeType":"Block","src":"11631:208:133","statements":[{"assignments":[86312],"declarations":[{"constant":false,"id":86312,"mutability":"mutable","name":"mid","nameLocation":"11653:3:133","nodeType":"VariableDeclaration","scope":86339,"src":"11645:11:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86311,"name":"uint256","nodeType":"ElementaryTypeName","src":"11645:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":86319,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":86313,"name":"lo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86300,"src":"11660:2:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":86314,"name":"hi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86304,"src":"11665:2:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11660:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":86316,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11659:9:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":86317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11671:1:133","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11659:13:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11645:27:133"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":86320,"name":"l2Outputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85947,"src":"11690:9:133","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage","typeString":"struct Types.OutputProposal storage ref[] storage ref"}},"id":86322,"indexExpression":{"id":86321,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86312,"src":"11700:3:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11690:14:133","typeDescriptions":{"typeIdentifier":"t_struct$_OutputProposal_$104307_storage","typeString":"struct Types.OutputProposal storage ref"}},"id":86323,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"l2BlockNumber","nodeType":"MemberAccess","referencedDeclaration":104306,"src":"11690:28:133","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":86324,"name":"_l2BlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86278,"src":"11721:14:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11690:45:133","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":86337,"nodeType":"Block","src":"11788:41:133","statements":[{"expression":{"id":86335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":86333,"name":"hi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86304,"src":"11806:2:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":86334,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86312,"src":"11811:3:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11806:8:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":86336,"nodeType":"ExpressionStatement","src":"11806:8:133"}]},"id":86338,"nodeType":"IfStatement","src":"11686:143:133","trueBody":{"id":86332,"nodeType":"Block","src":"11737:45:133","statements":[{"expression":{"id":86330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":86326,"name":"lo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86300,"src":"11755:2:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":86327,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86312,"src":"11760:3:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":86328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11766:1:133","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11760:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11755:12:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":86331,"nodeType":"ExpressionStatement","src":"11755:12:133"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":86308,"name":"lo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86300,"src":"11622:2:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":86309,"name":"hi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86304,"src":"11627:2:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11622:7:133","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":86340,"nodeType":"WhileStatement","src":"11615:224:133"},{"expression":{"id":86341,"name":"lo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86300,"src":"11856:2:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":86282,"id":86342,"nodeType":"Return","src":"11849:9:133"}]},"documentation":{"id":86276,"nodeType":"StructuredDocumentation","src":"10595:369:133","text":"@notice Returns the index of the L2 output that checkpoints a given L2 block number.\n         Uses a binary search to find the first output greater than or equal to the given\n         block.\n @param _l2BlockNumber L2 block number to find a checkpoint for.\n @return Index of the first checkpoint that commits to the given L2 block number."},"functionSelector":"7f006420","implemented":true,"kind":"function","modifiers":[],"name":"getL2OutputIndexAfter","nameLocation":"10978:21:133","parameters":{"id":86279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86278,"mutability":"mutable","name":"_l2BlockNumber","nameLocation":"11008:14:133","nodeType":"VariableDeclaration","scope":86344,"src":"11000:22:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86277,"name":"uint256","nodeType":"ElementaryTypeName","src":"11000:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10999:24:133"},"returnParameters":{"id":86282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86281,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":86344,"src":"11045:7:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86280,"name":"uint256","nodeType":"ElementaryTypeName","src":"11045:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11044:9:133"},"scope":86435,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":86360,"nodeType":"FunctionDefinition","src":"12228:174:133","nodes":[],"body":{"id":86359,"nodeType":"Block","src":"12330:72:133","nodes":[],"statements":[{"expression":{"baseExpression":{"id":86353,"name":"l2Outputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85947,"src":"12347:9:133","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage","typeString":"struct Types.OutputProposal storage ref[] storage ref"}},"id":86357,"indexExpression":{"arguments":[{"id":86355,"name":"_l2BlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86347,"src":"12379:14:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":86354,"name":"getL2OutputIndexAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86344,"src":"12357:21:133","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":86356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12357:37:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12347:48:133","typeDescriptions":{"typeIdentifier":"t_struct$_OutputProposal_$104307_storage","typeString":"struct Types.OutputProposal storage ref"}},"functionReturnParameters":86352,"id":86358,"nodeType":"Return","src":"12340:55:133"}]},"documentation":{"id":86345,"nodeType":"StructuredDocumentation","src":"11871:352:133","text":"@notice Returns the L2 output proposal that checkpoints a given L2 block number.\n         Uses a binary search to find the first output greater than or equal to the given\n         block.\n @param _l2BlockNumber L2 block number to find a checkpoint for.\n @return First checkpoint that commits to the given L2 block number."},"functionSelector":"cf8e5cf0","implemented":true,"kind":"function","modifiers":[],"name":"getL2OutputAfter","nameLocation":"12237:16:133","parameters":{"id":86348,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86347,"mutability":"mutable","name":"_l2BlockNumber","nameLocation":"12262:14:133","nodeType":"VariableDeclaration","scope":86360,"src":"12254:22:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86346,"name":"uint256","nodeType":"ElementaryTypeName","src":"12254:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12253:24:133"},"returnParameters":{"id":86352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86351,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":86360,"src":"12301:27:133","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_OutputProposal_$104307_memory_ptr","typeString":"struct Types.OutputProposal"},"typeName":{"id":86350,"nodeType":"UserDefinedTypeName","pathNode":{"id":86349,"name":"Types.OutputProposal","nodeType":"IdentifierPath","referencedDeclaration":104307,"src":"12301:20:133"},"referencedDeclaration":104307,"src":"12301:20:133","typeDescriptions":{"typeIdentifier":"t_struct$_OutputProposal_$104307_storage_ptr","typeString":"struct Types.OutputProposal"}},"visibility":"internal"}],"src":"12300:29:133"},"scope":86435,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":86372,"nodeType":"FunctionDefinition","src":"12608:105:133","nodes":[],"body":{"id":86371,"nodeType":"Block","src":"12669:44:133","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":86366,"name":"l2Outputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85947,"src":"12686:9:133","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage","typeString":"struct Types.OutputProposal storage ref[] storage ref"}},"id":86367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"12686:16:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":86368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12705:1:133","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12686:20:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":86365,"id":86370,"nodeType":"Return","src":"12679:27:133"}]},"documentation":{"id":86361,"nodeType":"StructuredDocumentation","src":"12408:195:133","text":"@notice Returns the number of outputs that have been proposed.\n         Will revert if no outputs have been proposed yet.\n @return The number of outputs that have been proposed."},"functionSelector":"69f16eec","implemented":true,"kind":"function","modifiers":[],"name":"latestOutputIndex","nameLocation":"12617:17:133","parameters":{"id":86362,"nodeType":"ParameterList","parameters":[],"src":"12634:2:133"},"returnParameters":{"id":86365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86364,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":86372,"src":"12660:7:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86363,"name":"uint256","nodeType":"ElementaryTypeName","src":"12660:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12659:9:133"},"scope":86435,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":86382,"nodeType":"FunctionDefinition","src":"12849:97:133","nodes":[],"body":{"id":86381,"nodeType":"Block","src":"12906:40:133","nodes":[],"statements":[{"expression":{"expression":{"id":86378,"name":"l2Outputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85947,"src":"12923:9:133","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage","typeString":"struct Types.OutputProposal storage ref[] storage ref"}},"id":86379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"12923:16:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":86377,"id":86380,"nodeType":"Return","src":"12916:23:133"}]},"documentation":{"id":86373,"nodeType":"StructuredDocumentation","src":"12719:125:133","text":"@notice Returns the index of the next output to be proposed.\n @return The index of the next output to be proposed."},"functionSelector":"6abcf563","implemented":true,"kind":"function","modifiers":[],"name":"nextOutputIndex","nameLocation":"12858:15:133","parameters":{"id":86374,"nodeType":"ParameterList","parameters":[],"src":"12873:2:133"},"returnParameters":{"id":86377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86376,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":86382,"src":"12897:7:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86375,"name":"uint256","nodeType":"ElementaryTypeName","src":"12897:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12896:9:133"},"scope":86435,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":86403,"nodeType":"FunctionDefinition","src":"13212:174:133","nodes":[],"body":{"id":86402,"nodeType":"Block","src":"13271:115:133","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":86388,"name":"l2Outputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85947,"src":"13288:9:133","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage","typeString":"struct Types.OutputProposal storage ref[] storage ref"}},"id":86389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"13288:16:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":86390,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13308:1:133","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13288:21:133","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"baseExpression":{"id":86393,"name":"l2Outputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85947,"src":"13334:9:133","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage","typeString":"struct Types.OutputProposal storage ref[] storage ref"}},"id":86398,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":86394,"name":"l2Outputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85947,"src":"13344:9:133","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage","typeString":"struct Types.OutputProposal storage ref[] storage ref"}},"id":86395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"13344:16:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":86396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13363:1:133","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13344:20:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13334:31:133","typeDescriptions":{"typeIdentifier":"t_struct$_OutputProposal_$104307_storage","typeString":"struct Types.OutputProposal storage ref"}},"id":86399,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"l2BlockNumber","nodeType":"MemberAccess","referencedDeclaration":104306,"src":"13334:45:133","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":86400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13288:91:133","trueExpression":{"id":86392,"name":"startingBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85939,"src":"13312:19:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":86387,"id":86401,"nodeType":"Return","src":"13281:98:133"}]},"documentation":{"id":86383,"nodeType":"StructuredDocumentation","src":"12952:255:133","text":"@notice Returns the block number of the latest submitted L2 output proposal.\n         If no proposals been submitted yet then this function will return the starting\n         block number.\n @return Latest submitted L2 block number."},"functionSelector":"4599c788","implemented":true,"kind":"function","modifiers":[],"name":"latestBlockNumber","nameLocation":"13221:17:133","parameters":{"id":86384,"nodeType":"ParameterList","parameters":[],"src":"13238:2:133"},"returnParameters":{"id":86387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86386,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":86403,"src":"13262:7:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86385,"name":"uint256","nodeType":"ElementaryTypeName","src":"13262:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13261:9:133"},"scope":86435,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":86415,"nodeType":"FunctionDefinition","src":"13524:121:133","nodes":[],"body":{"id":86414,"nodeType":"Block","src":"13581:64:133","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":86409,"name":"latestBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86403,"src":"13598:17:133","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":86410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13598:19:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":86411,"name":"submissionInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85950,"src":"13620:18:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13598:40:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":86408,"id":86413,"nodeType":"Return","src":"13591:47:133"}]},"documentation":{"id":86404,"nodeType":"StructuredDocumentation","src":"13392:127:133","text":"@notice Computes the block number of the next L2 block that needs to be checkpointed.\n @return Next L2 block number."},"functionSelector":"dcec3348","implemented":true,"kind":"function","modifiers":[],"name":"nextBlockNumber","nameLocation":"13533:15:133","parameters":{"id":86405,"nodeType":"ParameterList","parameters":[],"src":"13548:2:133"},"returnParameters":{"id":86408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86407,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":86415,"src":"13572:7:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86406,"name":"uint256","nodeType":"ElementaryTypeName","src":"13572:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13571:9:133"},"scope":86435,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":86434,"nodeType":"FunctionDefinition","src":"13854:180:133","nodes":[],"body":{"id":86433,"nodeType":"Block","src":"13936:98:133","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":86423,"name":"startingTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85942,"src":"13953:17:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":86424,"name":"_l2BlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86418,"src":"13975:14:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":86425,"name":"startingBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85939,"src":"13992:19:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13975:36:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":86427,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13974:38:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":86428,"name":"l2BlockTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85953,"src":"14015:11:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13974:52:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":86430,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13973:54:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13953:74:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":86422,"id":86432,"nodeType":"Return","src":"13946:81:133"}]},"documentation":{"id":86416,"nodeType":"StructuredDocumentation","src":"13651:198:133","text":"@notice Returns the L2 timestamp corresponding to a given L2 block number.\n @param _l2BlockNumber The L2 block number of the target block.\n @return L2 timestamp of the given block."},"functionSelector":"d1de856c","implemented":true,"kind":"function","modifiers":[],"name":"computeL2Timestamp","nameLocation":"13863:18:133","parameters":{"id":86419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86418,"mutability":"mutable","name":"_l2BlockNumber","nameLocation":"13890:14:133","nodeType":"VariableDeclaration","scope":86434,"src":"13882:22:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86417,"name":"uint256","nodeType":"ElementaryTypeName","src":"13882:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13881:24:133"},"returnParameters":{"id":86422,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86421,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":86434,"src":"13927:7:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86420,"name":"uint256","nodeType":"ElementaryTypeName","src":"13927:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13926:9:133"},"scope":86435,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":85933,"name":"Initializable","nodeType":"IdentifierPath","referencedDeclaration":49678,"src":"638:13:133"},"id":85934,"nodeType":"InheritanceSpecifier","src":"638:13:133"},{"baseName":{"id":85935,"name":"ISemver","nodeType":"IdentifierPath","referencedDeclaration":109417,"src":"653:7:133"},"id":85936,"nodeType":"InheritanceSpecifier","src":"653:7:133"}],"canonicalName":"L2OutputOracle","contractDependencies":[],"contractKind":"contract","documentation":{"id":85932,"nodeType":"StructuredDocumentation","src":"304:307:133","text":"@custom:proxied\n @title L2OutputOracle\n @notice The L2OutputOracle contains an array of L2 state outputs, where each output is a\n         commitment to the state of the L2 chain. Other contracts like the OptimismPortal use\n         these outputs to verify information about the state of L2."},"fullyImplemented":true,"linearizedBaseContracts":[86435,109417,49678],"name":"L2OutputOracle","nameLocation":"620:14:133","scope":86436,"usedErrors":[]}],"license":"MIT"},"id":133}