Commit 5ffa5bd8 authored by Maurelian's avatar Maurelian Committed by GitHub

Merge pull request #8293 from ethereum-optimism/feat/portal-reads-superchainconfig

Portal reads pause status from SuperchainConfig
parents 2827e697 6f9b8ea4
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -9,11 +9,11 @@ import (
"github.com/ethereum-optimism/optimism/op-bindings/solc"
)
const OptimismPortalStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"_initialized\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_uint8\"},{\"astId\":1001,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"_initializing\",\"offset\":1,\"slot\":\"0\",\"type\":\"t_bool\"},{\"astId\":1002,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"params\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_struct(ResourceParams)1009_storage\"},{\"astId\":1003,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"2\",\"type\":\"t_array(t_uint256)48_storage\"},{\"astId\":1004,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"l2Sender\",\"offset\":0,\"slot\":\"50\",\"type\":\"t_address\"},{\"astId\":1005,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"finalizedWithdrawals\",\"offset\":0,\"slot\":\"51\",\"type\":\"t_mapping(t_bytes32,t_bool)\"},{\"astId\":1006,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"provenWithdrawals\",\"offset\":0,\"slot\":\"52\",\"type\":\"t_mapping(t_bytes32,t_struct(ProvenWithdrawal)1008_storage)\"},{\"astId\":1007,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"paused\",\"offset\":0,\"slot\":\"53\",\"type\":\"t_bool\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_array(t_uint256)48_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[48]\",\"numberOfBytes\":\"1536\",\"base\":\"t_uint256\"},\"t_bool\":{\"encoding\":\"inplace\",\"label\":\"bool\",\"numberOfBytes\":\"1\"},\"t_bytes32\":{\"encoding\":\"inplace\",\"label\":\"bytes32\",\"numberOfBytes\":\"32\"},\"t_mapping(t_bytes32,t_bool)\":{\"encoding\":\"mapping\",\"label\":\"mapping(bytes32 =\u003e bool)\",\"numberOfBytes\":\"32\",\"key\":\"t_bytes32\",\"value\":\"t_bool\"},\"t_mapping(t_bytes32,t_struct(ProvenWithdrawal)1008_storage)\":{\"encoding\":\"mapping\",\"label\":\"mapping(bytes32 =\u003e struct OptimismPortal.ProvenWithdrawal)\",\"numberOfBytes\":\"32\",\"key\":\"t_bytes32\",\"value\":\"t_struct(ProvenWithdrawal)1008_storage\"},\"t_struct(ProvenWithdrawal)1008_storage\":{\"encoding\":\"inplace\",\"label\":\"struct OptimismPortal.ProvenWithdrawal\",\"numberOfBytes\":\"64\"},\"t_struct(ResourceParams)1009_storage\":{\"encoding\":\"inplace\",\"label\":\"struct ResourceMetering.ResourceParams\",\"numberOfBytes\":\"32\"},\"t_uint128\":{\"encoding\":\"inplace\",\"label\":\"uint128\",\"numberOfBytes\":\"16\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"},\"t_uint64\":{\"encoding\":\"inplace\",\"label\":\"uint64\",\"numberOfBytes\":\"8\"},\"t_uint8\":{\"encoding\":\"inplace\",\"label\":\"uint8\",\"numberOfBytes\":\"1\"}}}"
const OptimismPortalStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"_initialized\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_uint8\"},{\"astId\":1001,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"_initializing\",\"offset\":1,\"slot\":\"0\",\"type\":\"t_bool\"},{\"astId\":1002,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"params\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_struct(ResourceParams)1011_storage\"},{\"astId\":1003,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"2\",\"type\":\"t_array(t_uint256)48_storage\"},{\"astId\":1004,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"l2Sender\",\"offset\":0,\"slot\":\"50\",\"type\":\"t_address\"},{\"astId\":1005,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"finalizedWithdrawals\",\"offset\":0,\"slot\":\"51\",\"type\":\"t_mapping(t_bytes32,t_bool)\"},{\"astId\":1006,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"provenWithdrawals\",\"offset\":0,\"slot\":\"52\",\"type\":\"t_mapping(t_bytes32,t_struct(ProvenWithdrawal)1010_storage)\"},{\"astId\":1007,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"spacer_53_0_1\",\"offset\":0,\"slot\":\"53\",\"type\":\"t_bool\"},{\"astId\":1008,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"superchainConfig\",\"offset\":1,\"slot\":\"53\",\"type\":\"t_contract(SuperchainConfig)1009\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_array(t_uint256)48_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[48]\",\"numberOfBytes\":\"1536\",\"base\":\"t_uint256\"},\"t_bool\":{\"encoding\":\"inplace\",\"label\":\"bool\",\"numberOfBytes\":\"1\"},\"t_bytes32\":{\"encoding\":\"inplace\",\"label\":\"bytes32\",\"numberOfBytes\":\"32\"},\"t_contract(SuperchainConfig)1009\":{\"encoding\":\"inplace\",\"label\":\"contract SuperchainConfig\",\"numberOfBytes\":\"20\"},\"t_mapping(t_bytes32,t_bool)\":{\"encoding\":\"mapping\",\"label\":\"mapping(bytes32 =\u003e bool)\",\"numberOfBytes\":\"32\",\"key\":\"t_bytes32\",\"value\":\"t_bool\"},\"t_mapping(t_bytes32,t_struct(ProvenWithdrawal)1010_storage)\":{\"encoding\":\"mapping\",\"label\":\"mapping(bytes32 =\u003e struct OptimismPortal.ProvenWithdrawal)\",\"numberOfBytes\":\"32\",\"key\":\"t_bytes32\",\"value\":\"t_struct(ProvenWithdrawal)1010_storage\"},\"t_struct(ProvenWithdrawal)1010_storage\":{\"encoding\":\"inplace\",\"label\":\"struct OptimismPortal.ProvenWithdrawal\",\"numberOfBytes\":\"64\"},\"t_struct(ResourceParams)1011_storage\":{\"encoding\":\"inplace\",\"label\":\"struct ResourceMetering.ResourceParams\",\"numberOfBytes\":\"32\"},\"t_uint128\":{\"encoding\":\"inplace\",\"label\":\"uint128\",\"numberOfBytes\":\"16\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"},\"t_uint64\":{\"encoding\":\"inplace\",\"label\":\"uint64\",\"numberOfBytes\":\"8\"},\"t_uint8\":{\"encoding\":\"inplace\",\"label\":\"uint8\",\"numberOfBytes\":\"1\"}}}"
var OptimismPortalStorageLayout = new(solc.StorageLayout)
var OptimismPortalDeployedBin = "0x60806040526004361061016d5760003560e01c80638b4c40b0116100cb578063a35d99df1161007f578063e965084c11610059578063e965084c14610525578063e9e05c42146105b1578063f0498750146105c457600080fd5b8063a35d99df1461042b578063cff0ab9614610464578063d53a822f1461050557600080fd5b80639b5f694a116100b05780639b5f694a1461039b5780639bf62d82146103ce578063a14238e7146103fb57600080fd5b80638b4c40b0146101925780638c3152e91461037b57600080fd5b806354fd4d50116101225780636dbffb78116101075780636dbffb7814610312578063724c184c146103325780638456cb591461036657600080fd5b806354fd4d50146102925780635c975abb146102e857600080fd5b80633f4ba83a116101535780633f4ba83a1461022a578063452a93201461023f5780634870496f1461027257600080fd5b80621c2ff61461019957806333d7e2bd146101f757600080fd5b36610194576101923334620186a06000604051806020016040528060008152506105f8565b005b600080fd5b3480156101a557600080fd5b506101cd7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561020357600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006101cd565b34801561023657600080fd5b50610192610893565b34801561024b57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006101cd565b34801561027e57600080fd5b5061019261028d366004614b00565b6109b6565b34801561029e57600080fd5b506102db6040518060400160405280600681526020017f312e31312e30000000000000000000000000000000000000000000000000000081525081565b6040516101ee9190614c56565b3480156102f457600080fd5b506035546103029060ff1681565b60405190151581526020016101ee565b34801561031e57600080fd5b5061030261032d366004614c69565b61101c565b34801561033e57600080fd5b506101cd7f000000000000000000000000000000000000000000000000000000000000000081565b34801561037257600080fd5b506101926110f3565b34801561038757600080fd5b50610192610396366004614c82565b611213565b3480156103a757600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006101cd565b3480156103da57600080fd5b506032546101cd9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561040757600080fd5b50610302610416366004614c69565b60336020526000908152604090205460ff1681565b34801561043757600080fd5b5061044b610446366004614cd7565b611aee565b60405167ffffffffffffffff90911681526020016101ee565b34801561047057600080fd5b506001546104cc906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff92831660208501529116908201526060016101ee565b34801561051157600080fd5b50610192610520366004614d02565b611b07565b34801561053157600080fd5b50610583610540366004614c69565b603460205260009081526040902080546001909101546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041683565b604080519384526fffffffffffffffffffffffffffffffff92831660208501529116908201526060016101ee565b6101926105bf366004614d1d565b6105f8565b3480156105d057600080fd5b506101cd7f000000000000000000000000000000000000000000000000000000000000000081565b8260005a905083156106af5773ffffffffffffffffffffffffffffffffffffffff8716156106af57604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f4f7074696d69736d506f7274616c3a206d7573742073656e6420746f2061646460448201527f72657373283029207768656e206372656174696e67206120636f6e747261637460648201526084015b60405180910390fd5b6106b98351611aee565b67ffffffffffffffff168567ffffffffffffffff16101561075c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f4f7074696d69736d506f7274616c3a20676173206c696d697420746f6f20736d60448201527f616c6c000000000000000000000000000000000000000000000000000000000060648201526084016106a6565b6201d4c0835111156107ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4f7074696d69736d506f7274616c3a206461746120746f6f206c61726765000060448201526064016106a6565b333281146107eb575033731111000000000000000000000000000000001111015b60003488888888604051602001610806959493929190614d96565b604051602081830303815290604052905060008973ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c32846040516108769190614c56565b60405180910390a4505061088a8282611d10565b50505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f7074696d69736d506f7274616c3a206f6e6c7920677561726469616e20636160448201527f6e20756e7061757365000000000000000000000000000000000000000000000060648201526084016106a6565b603580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b60355460ff1615610a23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f7074696d69736d506f7274616c3a207061757365640000000000000000000060448201526064016106a6565b3073ffffffffffffffffffffffffffffffffffffffff16856040015173ffffffffffffffffffffffffffffffffffffffff1603610ae2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a20796f752063616e6e6f742073656e642060448201527f6d6573736167657320746f2074686520706f7274616c20636f6e74726163740060648201526084016106a6565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018590526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa158015610b70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b949190614e1b565b519050610bae610ba936869003860186614e80565b61203d565b8114610c3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f7074696d69736d506f7274616c3a20696e76616c6964206f7574707574207260448201527f6f6f742070726f6f66000000000000000000000000000000000000000000000060648201526084016106a6565b6000610c4787612099565b6000818152603460209081526040918290208251606081018452815481526001909101546fffffffffffffffffffffffffffffffff8082169383018490527001000000000000000000000000000000009091041692810192909252919250901580610d795750805160408083015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff90911660048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa158015610d51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d759190614e1b565b5114155b610e05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173682060448201527f68617320616c7265616479206265656e2070726f76656e00000000000000000060648201526084016106a6565b60408051602081018490526000918101829052606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083018190529250610ece9101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152600182527f0100000000000000000000000000000000000000000000000000000000000000602083015290610ec4888a614ee6565b8a604001356120c9565b610f5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a20696e76616c696420776974686472617760448201527f616c20696e636c7573696f6e2070726f6f66000000000000000000000000000060648201526084016106a6565b604080516060810182528581526fffffffffffffffffffffffffffffffff42811660208084019182528c831684860190815260008981526034835286812095518655925190518416700100000000000000000000000000000000029316929092176001909301929092558b830151908c0151925173ffffffffffffffffffffffffffffffffffffffff918216939091169186917f67a6208cfcc0801d50f6cbe764733f4fddf66ac0b04442061a8a8c0cb6b63f629190a4505050505050505050565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018290526000906110ed9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401606060405180830381865afa1580156110ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d29190614e1b565b602001516fffffffffffffffffffffffffffffffff166120ed565b92915050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146111b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4f7074696d69736d506f7274616c3a206f6e6c7920677561726469616e20636160448201527f6e2070617573650000000000000000000000000000000000000000000000000060648201526084016106a6565b603580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016109ac565b60355460ff1615611280576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f7074696d69736d506f7274616c3a207061757365640000000000000000000060448201526064016106a6565b60325473ffffffffffffffffffffffffffffffffffffffff1661dead14611329576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a2063616e206f6e6c79207472696767657260448201527f206f6e65207769746864726177616c20706572207472616e73616374696f6e0060648201526084016106a6565b600061133482612099565b60008181526034602090815260408083208151606081018352815481526001909101546fffffffffffffffffffffffffffffffff8082169483018590527001000000000000000000000000000000009091041691810191909152929350900361141f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206e60448201527f6f74206265656e2070726f76656e20796574000000000000000000000000000060648201526084016106a6565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663887862726040518163ffffffff1660e01b8152600401602060405180830381865afa15801561148a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ae9190614f6a565b81602001516fffffffffffffffffffffffffffffffff161015611579576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604b60248201527f4f7074696d69736d506f7274616c3a207769746864726177616c2074696d657360448201527f74616d70206c657373207468616e204c32204f7261636c65207374617274696e60648201527f672074696d657374616d70000000000000000000000000000000000000000000608482015260a4016106a6565b61159881602001516fffffffffffffffffffffffffffffffff166120ed565b61164a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604560248201527f4f7074696d69736d506f7274616c3a2070726f76656e2077697468647261776160448201527f6c2066696e616c697a6174696f6e20706572696f6420686173206e6f7420656c60648201527f6170736564000000000000000000000000000000000000000000000000000000608482015260a4016106a6565b60408181015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff90911660048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa1580156116ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117139190614e1b565b82518151919250146117cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f4f7074696d69736d506f7274616c3a206f757470757420726f6f742070726f7660448201527f656e206973206e6f74207468652073616d652061732063757272656e74206f7560648201527f7470757420726f6f740000000000000000000000000000000000000000000000608482015260a4016106a6565b6117ec81602001516fffffffffffffffffffffffffffffffff166120ed565b61189e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f4f7074696d69736d506f7274616c3a206f75747075742070726f706f73616c2060448201527f66696e616c697a6174696f6e20706572696f6420686173206e6f7420656c617060648201527f7365640000000000000000000000000000000000000000000000000000000000608482015260a4016106a6565b60008381526033602052604090205460ff161561193d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206160448201527f6c7265616479206265656e2066696e616c697a6564000000000000000000000060648201526084016106a6565b600083815260336020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055908601516032805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff00000000000000000000000000000000000000009092169190911790558501516080860151606087015160a08801516119df93929190612190565b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405190915084907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b90611a4490841515815260200190565b60405180910390a280158015611a5a5750326001145b15611ae7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f7074696d69736d506f7274616c3a207769746864726177616c206661696c6560448201527f640000000000000000000000000000000000000000000000000000000000000060648201526084016106a6565b5050505050565b6000611afb826010614fb2565b6110ed90615208614fe2565b600054610100900460ff1615808015611b275750600054600160ff909116105b80611b415750303b158015611b41575060005460ff166001145b611bcd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106a6565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611c2b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055603580548315157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116179055611c8d6121ee565b8015611cf057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600154600090611d46907801000000000000000000000000000000000000000000000000900467ffffffffffffffff164361500e565b90506000611d526122d1565b90506000816020015160ff16826000015163ffffffff16611d739190615054565b90508215611eaa57600154600090611daa908390700100000000000000000000000000000000900467ffffffffffffffff166150bc565b90506000836040015160ff1683611dc19190615130565b600154611de19084906fffffffffffffffffffffffffffffffff16615130565b611deb9190615054565b600154909150600090611e3c90611e159084906fffffffffffffffffffffffffffffffff166151ec565b866060015163ffffffff168760a001516fffffffffffffffffffffffffffffffff16612397565b90506001861115611e6b57611e68611e1582876040015160ff1660018a611e63919061500e565b6123b6565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b60018054869190601090611edd908490700100000000000000000000000000000000900467ffffffffffffffff16614fe2565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550816000015163ffffffff16600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff161315611fc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f7260448201527f6520676173207468616e20617661696c61626c6520676173206c696d6974000060648201526084016106a6565b600154600090611fec906fffffffffffffffffffffffffffffffff1667ffffffffffffffff8816615260565b90506000611ffe48633b9aca0061240b565b612008908361529d565b905060005a612017908861500e565b9050808211156120335761203361202e828461500e565b612422565b5050505050505050565b6000816000015182602001518360400151846060015160405160200161207c949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b80516020808301516040808501516060860151608087015160a0880151935160009761207c9790969591016152b1565b6000806120d586612450565b90506120e381868686612482565b9695505050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f4daa2916040518163ffffffff1660e01b8152600401602060405180830381865afa15801561215a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217e9190614f6a565b6121889083615308565b421192915050565b60008060006121a08660006124b2565b9050806121d6576308c379a06000526020805278185361666543616c6c3a204e6f7420656e6f756768206761736058526064601cfd5b600080855160208701888b5af1979650505050505050565b600054610100900460ff16612285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106a6565b60408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663cc731b026040518163ffffffff1660e01b815260040160c060405180830381865afa15801561236e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123929190615345565b905090565b60006123ac6123a685856124d0565b836124e0565b90505b9392505050565b6000670de0b6b3a76400006123f76123ce8583615054565b6123e090670de0b6b3a76400006150bc565b6123f285670de0b6b3a7640000615130565b6124ef565b6124019086615130565b6123ac9190615054565b60008183101561241b57816123af565b5090919050565b6000805a90505b825a612435908361500e565b101561244b57612444826153e4565b9150612429565b505050565b6060818051906020012060405160200161246c91815260200190565b6040516020818303038152906040529050919050565b60006124a984612493878686612520565b8051602091820120825192909101919091201490565b95945050505050565b600080603f83619c4001026040850201603f5a021015949350505050565b60008183121561241b57816123af565b600081831261241b57816123af565b60006123af670de0b6b3a76400008361250786612f9e565b6125119190615130565b61251b9190615054565b6131e2565b6060600084511161258d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d65726b6c65547269653a20656d707479206b6579000000000000000000000060448201526064016106a6565b600061259884613421565b905060006125a58661350d565b90506000846040516020016125bc91815260200190565b60405160208183030381529060405290506000805b8451811015612f155760008582815181106125ee576125ee61541c565b602002602001015190508451831115612689576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201527f74616c206b6579206c656e67746800000000000000000000000000000000000060648201526084016106a6565b8260000361274257805180516020918201206040516126d7926126b192910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b61273d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016106a6565b612899565b8051516020116127f8578051805160209182012060405161276c926126b192910190815260200190565b61273d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e60448201527f616c20686173680000000000000000000000000000000000000000000000000060648201526084016106a6565b805184516020808701919091208251919092012014612899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f6460448201527f652068617368000000000000000000000000000000000000000000000000000060648201526084016106a6565b6128a560106001615308565b81602001515103612a815784518303612a19576128df81602001516010815181106128d2576128d261541c565b6020026020010151613570565b96506000875111612972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016106a6565b60018651612980919061500e565b8214612a0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016106a6565b5050505050506123af565b6000858481518110612a2d57612a2d61541c565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110612a5857612a5861541c565b60200260200101519050612a6b816136d0565b9550612a78600186615308565b94505050612f02565b600281602001515103612e7a576000612a99826136f5565b9050600081600081518110612ab057612ab061541c565b016020015160f81c90506000612ac760028361544b565b612ad290600261546d565b90506000612ae3848360ff16613719565b90506000612af18a89613719565b90506000612aff838361374f565b905080835114612b91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016106a6565b60ff851660021480612ba6575060ff85166003145b15612d955780825114612c3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016106a6565b612c5587602001516001815181106128d2576128d261541c565b9c5060008d5111612ce8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016106a6565b60018c51612cf6919061500e565b8814612d84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016106a6565b5050505050505050505050506123af565b60ff85161580612da8575060ff85166001145b15612de757612dd48760200151600181518110612dc757612dc761541c565b60200260200101516136d0565b9950612de0818a615308565b9850612e6f565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f6465207769746860448201527f20616e20756e6b6e6f776e20707265666978000000000000000000000000000060648201526084016106a6565b505050505050612f02565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e70617273656160448201527f626c65206e6f646500000000000000000000000000000000000000000000000060648201526084016106a6565b5080612f0d816153e4565b9150506125d1565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c6560448201527f6d656e747300000000000000000000000000000000000000000000000000000060648201526084016106a6565b6000808213613009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e4544000000000000000000000000000000000000000000000060448201526064016106a6565b6000606061301684613803565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c1821361321357506000919050565b680755bf798b4a1bf1e58212613285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4558505f4f564552464c4f57000000000000000000000000000000000000000060448201526064016106a6565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b80516060908067ffffffffffffffff81111561343f5761343f614926565b60405190808252806020026020018201604052801561348457816020015b604080518082019091526060808252602082015281526020019060019003908161345d5790505b50915060005b818110156135065760405180604001604052808583815181106134af576134af61541c565b602002602001015181526020016134de8684815181106134d1576134d161541c565b60200260200101516138d9565b8152508382815181106134f3576134f361541c565b602090810291909101015260010161348a565b5050919050565b606080604051905082518060011b603f8101601f1916830160405280835250602084016020830160005b83811015613565578060011b82018184015160001a8060041c8253600f811660018301535050600101613537565b509295945050505050565b60606000806000613580856138ec565b91945092509050600081600181111561359b5761359b615490565b14613628576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016106a6565b6136328284615308565b8551146136c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527f616e20696e76616c69642072656d61696e64657200000000000000000000000060648201526084016106a6565b6124a985602001518484614359565b606060208260000151106136ec576136e782613570565b6110ed565b6110ed826143ed565b60606110ed61371483602001516000815181106128d2576128d261541c565b61350d565b60608251821061373857506040805160208101909152600081526110ed565b6123af838384865161374a919061500e565b614403565b6000808251845110613762578251613765565b83515b90505b80821080156137ec57508282815181106137845761378461541c565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168483815181106137c3576137c361541c565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b156137fc57816001019150613768565b5092915050565b600080821161386e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e4544000000000000000000000000000000000000000000000060448201526064016106a6565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b60606110ed6138e7836145db565b6146c4565b6000806000808460000151116139aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a4016106a6565b6020840151805160001a607f81116139cf576000600160009450945094505050614352565b60b78111613bdd5760006139e460808361500e565b905080876000015111613a9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604e60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201527f2873686f727420737472696e6729000000000000000000000000000000000000608482015260a4016106a6565b6001838101517fff00000000000000000000000000000000000000000000000000000000000000169082141580613b1857507f80000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610155b613bca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201527f73686f727420737472696e672900000000000000000000000000000000000000608482015260a4016106a6565b5060019550935060009250614352915050565b60bf8111613f2b576000613bf260b78361500e565b905080876000015111613cad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605160248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527f67746820286c6f6e6720737472696e6729000000000000000000000000000000608482015260a4016106a6565b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003613d8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e6720737472696e672900000000000000000000000000000000000000000000608482015260a4016106a6565b600184015160088302610100031c60378111613e4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f20737472696e6729000000000000000000000000000000000000000000000000608482015260a4016106a6565b613e598184615308565b895111613f0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604c60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e6720737472696e67290000000000000000000000000000000000000000608482015260a4016106a6565b613f19836001615308565b97509550600094506143529350505050565b60f7811161400c576000613f4060c08361500e565b905080876000015111613ffb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e206c697374206c656e67746820287360648201527f686f7274206c6973742900000000000000000000000000000000000000000000608482015260a4016106a6565b600195509350849250614352915050565b600061401960f78361500e565b9050808760000151116140d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201527f6820286c6f6e67206c6973742900000000000000000000000000000000000000608482015260a4016106a6565b60018301517fff000000000000000000000000000000000000000000000000000000000000001660008190036141b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e67206c69737429000000000000000000000000000000000000000000000000608482015260a4016106a6565b600184015160088302610100031c60378111614276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604660248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f206c697374290000000000000000000000000000000000000000000000000000608482015260a4016106a6565b6142808184615308565b895111614335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e67206c6973742900000000000000000000000000000000000000000000608482015260a4016106a6565b614340836001615308565b97509550600194506143529350505050565b9193909250565b60608167ffffffffffffffff81111561437457614374614926565b6040519080825280601f01601f19166020018201604052801561439e576020820181803683370190505b50905081156123af5760006143b38486615308565b90506020820160005b848110156143d45782810151828201526020016143bc565b848111156143e3576000858301525b5050509392505050565b60606110ed826020015160008460000151614359565b60608182601f011015614472576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f7700000000000000000000000000000000000060448201526064016106a6565b8282840110156144de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f7700000000000000000000000000000000000060448201526064016106a6565b8183018451101561454b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e647300000000000000000000000000000060448201526064016106a6565b60608215801561456a57604051915060008252602082016040526145d2565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156145a357805183526020928301920161458b565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b604080518082019091526000808252602082015260008251116146a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a4016106a6565b50604080518082019091528151815260209182019181019190915290565b606060008060006146d4856138ec565b9194509250905060018160018111156146ef576146ef615490565b1461477c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016106a6565b84516147888385615308565b14614815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e766160448201527f6c696420646174612072656d61696e646572000000000000000000000000000060648201526084016106a6565b604080516020808252610420820190925290816020015b604080518082019091526000808252602082015281526020019060019003908161482c5790505093506000835b865181101561491a5760008061489f6040518060400160405280858c60000151614883919061500e565b8152602001858c602001516148989190615308565b90526138ec565b5091509150604051806040016040528083836148bb9190615308565b8152602001848b602001516148d09190615308565b8152508885815181106148e5576148e561541c565b60209081029190910101526148fb600185615308565b93506149078183615308565b6149119084615308565b92505050614859565b50845250919392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561499c5761499c614926565b604052919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146149c857600080fd5b919050565b600082601f8301126149de57600080fd5b813567ffffffffffffffff8111156149f8576149f8614926565b614a2960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601614955565b818152846020838601011115614a3e57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215614a6d57600080fd5b60405160c0810167ffffffffffffffff8282108183111715614a9157614a91614926565b8160405282935084358352614aa8602086016149a4565b6020840152614ab9604086016149a4565b6040840152606085013560608401526080850135608084015260a0850135915080821115614ae657600080fd5b50614af3858286016149cd565b60a0830152505092915050565b600080600080600085870360e0811215614b1957600080fd5b863567ffffffffffffffff80821115614b3157600080fd5b614b3d8a838b01614a5b565b97506020890135965060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc084011215614b7657600080fd5b60408901955060c0890135925080831115614b9057600080fd5b828901925089601f840112614ba457600080fd5b8235915080821115614bb557600080fd5b508860208260051b8401011115614bcb57600080fd5b959894975092955050506020019190565b60005b83811015614bf7578181015183820152602001614bdf565b83811115614c06576000848401525b50505050565b60008151808452614c24816020860160208601614bdc565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006123af6020830184614c0c565b600060208284031215614c7b57600080fd5b5035919050565b600060208284031215614c9457600080fd5b813567ffffffffffffffff811115614cab57600080fd5b614cb784828501614a5b565b949350505050565b803567ffffffffffffffff811681146149c857600080fd5b600060208284031215614ce957600080fd5b6123af82614cbf565b803580151581146149c857600080fd5b600060208284031215614d1457600080fd5b6123af82614cf2565b600080600080600060a08688031215614d3557600080fd5b614d3e866149a4565b945060208601359350614d5360408701614cbf565b9250614d6160608701614cf2565b9150608086013567ffffffffffffffff811115614d7d57600080fd5b614d89888289016149cd565b9150509295509295909350565b8581528460208201527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b16604082015282151560f81b604882015260008251614dea816049850160208701614bdc565b919091016049019695505050505050565b80516fffffffffffffffffffffffffffffffff811681146149c857600080fd5b600060608284031215614e2d57600080fd5b6040516060810181811067ffffffffffffffff82111715614e5057614e50614926565b60405282518152614e6360208401614dfb565b6020820152614e7460408401614dfb565b60408201529392505050565b600060808284031215614e9257600080fd5b6040516080810181811067ffffffffffffffff82111715614eb557614eb5614926565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b600067ffffffffffffffff80841115614f0157614f01614926565b8360051b6020614f12818301614955565b868152918501918181019036841115614f2a57600080fd5b865b84811015614f5e57803586811115614f445760008081fd5b614f5036828b016149cd565b845250918301918301614f2c565b50979650505050505050565b600060208284031215614f7c57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff80831681851681830481118215151615614fd957614fd9614f83565b02949350505050565b600067ffffffffffffffff80831681851680830382111561500557615005614f83565b01949350505050565b60008282101561502057615020614f83565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261506357615063615025565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f8000000000000000000000000000000000000000000000000000000000000000831416156150b7576150b7614f83565b500590565b6000808312837f8000000000000000000000000000000000000000000000000000000000000000018312811516156150f6576150f6614f83565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01831381161561512a5761512a614f83565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60008413600084138583048511828216161561517157615171614f83565b7f800000000000000000000000000000000000000000000000000000000000000060008712868205881281841616156151ac576151ac614f83565b600087129250878205871284841616156151c8576151c8614f83565b878505871281841616156151de576151de614f83565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0384138115161561522657615226614f83565b827f800000000000000000000000000000000000000000000000000000000000000003841281161561525a5761525a614f83565b50500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561529857615298614f83565b500290565b6000826152ac576152ac615025565b500490565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a08301526152fc60c0830184614c0c565b98975050505050505050565b6000821982111561531b5761531b614f83565b500190565b805163ffffffff811681146149c857600080fd5b805160ff811681146149c857600080fd5b600060c0828403121561535757600080fd5b60405160c0810181811067ffffffffffffffff8211171561537a5761537a614926565b60405261538683615320565b815261539460208401615334565b60208201526153a560408401615334565b60408201526153b660608401615320565b60608201526153c760808401615320565b60808201526153d860a08401614dfb565b60a08201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361541557615415614f83565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff83168061545e5761545e615025565b8060ff84160691505092915050565b600060ff821660ff84168082101561548757615487614f83565b90039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080f000a"
var OptimismPortalDeployedBin = "0x60806040526004361061016d5760003560e01c80638b4c40b0116100cb578063a35d99df1161007f578063e965084c11610059578063e965084c14610505578063e9e05c4214610591578063f0498750146105a457600080fd5b8063a35d99df1461040b578063c4d66de814610444578063cff0ab961461046457600080fd5b80639b5f694a116100b05780639b5f694a1461037b5780639bf62d82146103ae578063a14238e7146103db57600080fd5b80638b4c40b0146101925780638c3152e91461035b57600080fd5b80634870496f116101225780635c975abb116101075780635c975abb146103115780636dbffb7814610326578063724c184c1461034657600080fd5b80634870496f1461029b57806354fd4d50146102bb57600080fd5b806333d7e2bd1161015357806333d7e2bd1461022157806335e80ab314610254578063452a93201461028657600080fd5b80621c2ff61461019957806318db921b146101f757600080fd5b36610194576101923334620186a06000604051806020016040528060008152506105d8565b005b600080fd5b3480156101a557600080fd5b506101cd7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561020357600080fd5b506035546102119060ff1681565b60405190151581526020016101ee565b34801561022d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006101cd565b34801561026057600080fd5b506035546101cd90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561029257600080fd5b506101cd610873565b3480156102a757600080fd5b506101926102b63660046149ef565b61090b565b3480156102c757600080fd5b506103046040518060400160405280600581526020017f322e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101ee9190614b45565b34801561031d57600080fd5b50610211610f73565b34801561033257600080fd5b50610211610341366004614b58565b611006565b34801561035257600080fd5b506101cd6110dd565b34801561036757600080fd5b50610192610376366004614b71565b6110e7565b34801561038757600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006101cd565b3480156103ba57600080fd5b506032546101cd9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156103e757600080fd5b506102116103f6366004614b58565b60336020526000908152604090205460ff1681565b34801561041757600080fd5b5061042b610426366004614bcb565b6119c4565b60405167ffffffffffffffff90911681526020016101ee565b34801561045057600080fd5b5061019261045f366004614be6565b6119dd565b34801561047057600080fd5b506001546104cc906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff92831660208501529116908201526060016101ee565b34801561051157600080fd5b50610563610520366004614b58565b603460205260009081526040902080546001909101546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041683565b604080519384526fffffffffffffffffffffffffffffffff92831660208501529116908201526060016101ee565b61019261059f366004614c11565b6105d8565b3480156105b057600080fd5b506101cd7f000000000000000000000000000000000000000000000000000000000000000081565b8260005a9050831561068f5773ffffffffffffffffffffffffffffffffffffffff87161561068f57604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f4f7074696d69736d506f7274616c3a206d7573742073656e6420746f2061646460448201527f72657373283029207768656e206372656174696e67206120636f6e747261637460648201526084015b60405180910390fd5b61069983516119c4565b67ffffffffffffffff168567ffffffffffffffff16101561073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f4f7074696d69736d506f7274616c3a20676173206c696d697420746f6f20736d60448201527f616c6c00000000000000000000000000000000000000000000000000000000006064820152608401610686565b6201d4c0835111156107aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4f7074696d69736d506f7274616c3a206461746120746f6f206c6172676500006044820152606401610686565b333281146107cb575033731111000000000000000000000000000000001111015b600034888888886040516020016107e6959493929190614c8e565b604051602081830303815290604052905060008973ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c32846040516108569190614b45565b60405180910390a4505061086a8282611bfe565b50505050505050565b6000603560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663452a93206040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109069190614cf3565b905090565b610913610f73565b1561097a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f7074696d69736d506f7274616c3a20706175736564000000000000000000006044820152606401610686565b3073ffffffffffffffffffffffffffffffffffffffff16856040015173ffffffffffffffffffffffffffffffffffffffff1603610a39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a20796f752063616e6e6f742073656e642060448201527f6d6573736167657320746f2074686520706f7274616c20636f6e7472616374006064820152608401610686565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018590526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa158015610ac7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aeb9190614d30565b519050610b05610b0036869003860186614d95565b611f2b565b8114610b93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f7074696d69736d506f7274616c3a20696e76616c6964206f7574707574207260448201527f6f6f742070726f6f6600000000000000000000000000000000000000000000006064820152608401610686565b6000610b9e87611f87565b6000818152603460209081526040918290208251606081018452815481526001909101546fffffffffffffffffffffffffffffffff8082169383018490527001000000000000000000000000000000009091041692810192909252919250901580610cd05750805160408083015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff90911660048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa158015610ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccc9190614d30565b5114155b610d5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173682060448201527f68617320616c7265616479206265656e2070726f76656e0000000000000000006064820152608401610686565b60408051602081018490526000918101829052606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083018190529250610e259101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152600182527f0100000000000000000000000000000000000000000000000000000000000000602083015290610e1b888a614dfb565b8a60400135611fb7565b610eb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a20696e76616c696420776974686472617760448201527f616c20696e636c7573696f6e2070726f6f6600000000000000000000000000006064820152608401610686565b604080516060810182528581526fffffffffffffffffffffffffffffffff42811660208084019182528c831684860190815260008981526034835286812095518655925190518416700100000000000000000000000000000000029316929092176001909301929092558b830151908c0151925173ffffffffffffffffffffffffffffffffffffffff918216939091169186917f67a6208cfcc0801d50f6cbe764733f4fddf66ac0b04442061a8a8c0cb6b63f629190a4505050505050505050565b6000603560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fe2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109069190614e7f565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018290526000906110d79073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401606060405180830381865afa158015611098573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110bc9190614d30565b602001516fffffffffffffffffffffffffffffffff16611fdb565b92915050565b6000610906610873565b6110ef610f73565b15611156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f7074696d69736d506f7274616c3a20706175736564000000000000000000006044820152606401610686565b60325473ffffffffffffffffffffffffffffffffffffffff1661dead146111ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a2063616e206f6e6c79207472696767657260448201527f206f6e65207769746864726177616c20706572207472616e73616374696f6e006064820152608401610686565b600061120a82611f87565b60008181526034602090815260408083208151606081018352815481526001909101546fffffffffffffffffffffffffffffffff808216948301859052700100000000000000000000000000000000909104169181019190915292935090036112f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206e60448201527f6f74206265656e2070726f76656e2079657400000000000000000000000000006064820152608401610686565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663887862726040518163ffffffff1660e01b8152600401602060405180830381865afa158015611360573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113849190614e9c565b81602001516fffffffffffffffffffffffffffffffff16101561144f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604b60248201527f4f7074696d69736d506f7274616c3a207769746864726177616c2074696d657360448201527f74616d70206c657373207468616e204c32204f7261636c65207374617274696e60648201527f672074696d657374616d70000000000000000000000000000000000000000000608482015260a401610686565b61146e81602001516fffffffffffffffffffffffffffffffff16611fdb565b611520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604560248201527f4f7074696d69736d506f7274616c3a2070726f76656e2077697468647261776160448201527f6c2066696e616c697a6174696f6e20706572696f6420686173206e6f7420656c60648201527f6170736564000000000000000000000000000000000000000000000000000000608482015260a401610686565b60408181015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff90911660048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa1580156115c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e99190614d30565b82518151919250146116a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f4f7074696d69736d506f7274616c3a206f757470757420726f6f742070726f7660448201527f656e206973206e6f74207468652073616d652061732063757272656e74206f7560648201527f7470757420726f6f740000000000000000000000000000000000000000000000608482015260a401610686565b6116c281602001516fffffffffffffffffffffffffffffffff16611fdb565b611774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f4f7074696d69736d506f7274616c3a206f75747075742070726f706f73616c2060448201527f66696e616c697a6174696f6e20706572696f6420686173206e6f7420656c617060648201527f7365640000000000000000000000000000000000000000000000000000000000608482015260a401610686565b60008381526033602052604090205460ff1615611813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206160448201527f6c7265616479206265656e2066696e616c697a656400000000000000000000006064820152608401610686565b600083815260336020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055908601516032805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff00000000000000000000000000000000000000009092169190911790558501516080860151606087015160a08801516118b59392919061207e565b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405190915084907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b9061191a90841515815260200190565b60405180910390a2801580156119305750326001145b156119bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f7074696d69736d506f7274616c3a207769746864726177616c206661696c6560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610686565b5050505050565b60006119d1826010614ee4565b6110d790615208614f14565b600054610100900460ff16158080156119fd5750600054600160ff909116105b80611a175750303b158015611a17575060005460ff166001145b611aa3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610686565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611b0157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead1790556035805473ffffffffffffffffffffffffffffffffffffffff8416610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909116179055611b7b6120dc565b8015611bde57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600154600090611c34907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1643614f40565b90506000611c406121bf565b90506000816020015160ff16826000015163ffffffff16611c619190614f86565b90508215611d9857600154600090611c98908390700100000000000000000000000000000000900467ffffffffffffffff16614fee565b90506000836040015160ff1683611caf9190615062565b600154611ccf9084906fffffffffffffffffffffffffffffffff16615062565b611cd99190614f86565b600154909150600090611d2a90611d039084906fffffffffffffffffffffffffffffffff1661511e565b866060015163ffffffff168760a001516fffffffffffffffffffffffffffffffff16612280565b90506001861115611d5957611d56611d0382876040015160ff1660018a611d519190614f40565b61229f565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b60018054869190601090611dcb908490700100000000000000000000000000000000900467ffffffffffffffff16614f14565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550816000015163ffffffff16600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff161315611eae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f7260448201527f6520676173207468616e20617661696c61626c6520676173206c696d697400006064820152608401610686565b600154600090611eda906fffffffffffffffffffffffffffffffff1667ffffffffffffffff8816615192565b90506000611eec48633b9aca006122f4565b611ef690836151cf565b905060005a611f059088614f40565b905080821115611f2157611f21611f1c8284614f40565b61230b565b5050505050505050565b60008160000151826020015183604001518460600151604051602001611f6a949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b80516020808301516040808501516060860151608087015160a08801519351600097611f6a9790969591016151e3565b600080611fc386612339565b9050611fd18186868661236b565b9695505050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f4daa2916040518163ffffffff1660e01b8152600401602060405180830381865afa158015612048573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206c9190614e9c565b612076908361523a565b421192915050565b600080600061208e86600061239b565b9050806120c4576308c379a06000526020805278185361666543616c6c3a204e6f7420656e6f756768206761736058526064601cfd5b600080855160208701888b5af1979650505050505050565b600054610100900460ff16612173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610686565b60408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663cc731b026040518163ffffffff1660e01b815260040160c060405180830381865afa15801561225c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109069190615277565b600061229561228f85856123b9565b836123c9565b90505b9392505050565b6000670de0b6b3a76400006122e06122b78583614f86565b6122c990670de0b6b3a7640000614fee565b6122db85670de0b6b3a7640000615062565b6123d8565b6122ea9086615062565b6122959190614f86565b6000818310156123045781612298565b5090919050565b6000805a90505b825a61231e9083614f40565b10156123345761232d82615316565b9150612312565b505050565b6060818051906020012060405160200161235591815260200190565b6040516020818303038152906040529050919050565b60006123928461237c878686612409565b8051602091820120825192909101919091201490565b95945050505050565b600080603f83619c4001026040850201603f5a021015949350505050565b6000818312156123045781612298565b60008183126123045781612298565b6000612298670de0b6b3a7640000836123f086612e87565b6123fa9190615062565b6124049190614f86565b6130cb565b60606000845111612476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d65726b6c65547269653a20656d707479206b657900000000000000000000006044820152606401610686565b60006124818461330a565b9050600061248e866133f6565b90506000846040516020016124a591815260200190565b60405160208183030381529060405290506000805b8451811015612dfe5760008582815181106124d7576124d761534e565b602002602001015190508451831115612572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201527f74616c206b6579206c656e6774680000000000000000000000000000000000006064820152608401610686565b8260000361262b57805180516020918201206040516125c09261259a92910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b612626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f7420686173680000006044820152606401610686565b612782565b8051516020116126e157805180516020918201206040516126559261259a92910190815260200190565b612626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e60448201527f616c2068617368000000000000000000000000000000000000000000000000006064820152608401610686565b805184516020808701919091208251919092012014612782576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f6460448201527f65206861736800000000000000000000000000000000000000000000000000006064820152608401610686565b61278e6010600161523a565b8160200151510361296a5784518303612902576127c881602001516010815181106127bb576127bb61534e565b6020026020010151613459565b9650600087511161285b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e63682900000000006064820152608401610686565b600186516128699190614f40565b82146128f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e6368290000000000006064820152608401610686565b505050505050612298565b60008584815181106129165761291661534e565b602001015160f81c60f81b60f81c9050600082602001518260ff16815181106129415761294161534e565b60200260200101519050612954816135b9565b955061296160018661523a565b94505050612deb565b600281602001515103612d63576000612982826135de565b90506000816000815181106129995761299961534e565b016020015160f81c905060006129b060028361537d565b6129bb90600261539f565b905060006129cc848360ff16613602565b905060006129da8a89613602565b905060006129e88383613638565b905080835114612a7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b65790000000000006064820152608401610686565b60ff851660021480612a8f575060ff85166003145b15612c7e5780825114612b24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e6465720000006064820152608401610686565b612b3e87602001516001815181106127bb576127bb61534e565b9c5060008d5111612bd1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c65616629000000000000006064820152608401610686565b60018c51612bdf9190614f40565b8814612c6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c6561662900000000000000006064820152608401610686565b505050505050505050505050612298565b60ff85161580612c91575060ff85166001145b15612cd057612cbd8760200151600181518110612cb057612cb061534e565b60200260200101516135b9565b9950612cc9818a61523a565b9850612d58565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f6465207769746860448201527f20616e20756e6b6e6f776e2070726566697800000000000000000000000000006064820152608401610686565b505050505050612deb565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e70617273656160448201527f626c65206e6f64650000000000000000000000000000000000000000000000006064820152608401610686565b5080612df681615316565b9150506124ba565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c6560448201527f6d656e74730000000000000000000000000000000000000000000000000000006064820152608401610686565b6000808213612ef2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610686565b60006060612eff846136ec565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c182136130fc57506000919050565b680755bf798b4a1bf1e5821261316e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4558505f4f564552464c4f5700000000000000000000000000000000000000006044820152606401610686565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b80516060908067ffffffffffffffff8111156133285761332861480f565b60405190808252806020026020018201604052801561336d57816020015b60408051808201909152606080825260208201528152602001906001900390816133465790505b50915060005b818110156133ef5760405180604001604052808583815181106133985761339861534e565b602002602001015181526020016133c78684815181106133ba576133ba61534e565b60200260200101516137c2565b8152508382815181106133dc576133dc61534e565b6020908102919091010152600101613373565b5050919050565b606080604051905082518060011b603f8101601f1916830160405280835250602084016020830160005b8381101561344e578060011b82018184015160001a8060041c8253600f811660018301535050600101613420565b509295945050505050565b60606000806000613469856137d5565b919450925090506000816001811115613484576134846153c2565b14613511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d000000000000006064820152608401610686565b61351b828461523a565b8551146135aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527f616e20696e76616c69642072656d61696e6465720000000000000000000000006064820152608401610686565b61239285602001518484614242565b606060208260000151106135d5576135d082613459565b6110d7565b6110d7826142d6565b60606110d76135fd83602001516000815181106127bb576127bb61534e565b6133f6565b60608251821061362157506040805160208101909152600081526110d7565b61229883838486516136339190614f40565b6142ec565b600080825184511061364b57825161364e565b83515b90505b80821080156136d5575082828151811061366d5761366d61534e565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168483815181106136ac576136ac61534e565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b156136e557816001019150613651565b5092915050565b6000808211613757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610686565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b60606110d76137d0836144c4565b6145ad565b600080600080846000015111613893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a401610686565b6020840151805160001a607f81116138b857600060016000945094509450505061423b565b60b78111613ac65760006138cd608083614f40565b905080876000015111613988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604e60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201527f2873686f727420737472696e6729000000000000000000000000000000000000608482015260a401610686565b6001838101517fff00000000000000000000000000000000000000000000000000000000000000169082141580613a0157507f80000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610155b613ab3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201527f73686f727420737472696e672900000000000000000000000000000000000000608482015260a401610686565b506001955093506000925061423b915050565b60bf8111613e14576000613adb60b783614f40565b905080876000015111613b96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605160248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527f67746820286c6f6e6720737472696e6729000000000000000000000000000000608482015260a401610686565b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003613c74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e6720737472696e672900000000000000000000000000000000000000000000608482015260a401610686565b600184015160088302610100031c60378111613d38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f20737472696e6729000000000000000000000000000000000000000000000000608482015260a401610686565b613d42818461523a565b895111613df7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604c60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e6720737472696e67290000000000000000000000000000000000000000608482015260a401610686565b613e0283600161523a565b975095506000945061423b9350505050565b60f78111613ef5576000613e2960c083614f40565b905080876000015111613ee4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e206c697374206c656e67746820287360648201527f686f7274206c6973742900000000000000000000000000000000000000000000608482015260a401610686565b60019550935084925061423b915050565b6000613f0260f783614f40565b905080876000015111613fbd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201527f6820286c6f6e67206c6973742900000000000000000000000000000000000000608482015260a401610686565b60018301517fff0000000000000000000000000000000000000000000000000000000000000016600081900361409b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e67206c69737429000000000000000000000000000000000000000000000000608482015260a401610686565b600184015160088302610100031c6037811161415f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604660248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f206c697374290000000000000000000000000000000000000000000000000000608482015260a401610686565b614169818461523a565b89511161421e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e67206c6973742900000000000000000000000000000000000000000000608482015260a401610686565b61422983600161523a565b975095506001945061423b9350505050565b9193909250565b60608167ffffffffffffffff81111561425d5761425d61480f565b6040519080825280601f01601f191660200182016040528015614287576020820181803683370190505b509050811561229857600061429c848661523a565b90506020820160005b848110156142bd5782810151828201526020016142a5565b848111156142cc576000858301525b5050509392505050565b60606110d7826020015160008460000151614242565b60608182601f01101561435b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610686565b8282840110156143c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610686565b81830184511015614434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610686565b60608215801561445357604051915060008252602082016040526144bb565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561448c578051835260209283019201614474565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b6040805180820190915260008082526020820152600082511161458f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a401610686565b50604080518082019091528151815260209182019181019190915290565b606060008060006145bd856137d5565b9194509250905060018160018111156145d8576145d86153c2565b14614665576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d00000000000000006064820152608401610686565b8451614671838561523a565b146146fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e766160448201527f6c696420646174612072656d61696e64657200000000000000000000000000006064820152608401610686565b604080516020808252610420820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816147155790505093506000835b8651811015614803576000806147886040518060400160405280858c6000015161476c9190614f40565b8152602001858c60200151614781919061523a565b90526137d5565b5091509150604051806040016040528083836147a4919061523a565b8152602001848b602001516147b9919061523a565b8152508885815181106147ce576147ce61534e565b60209081029190910101526147e460018561523a565b93506147f0818361523a565b6147fa908461523a565b92505050614742565b50845250919392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156148855761488561480f565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff811681146148af57600080fd5b50565b600082601f8301126148c357600080fd5b813567ffffffffffffffff8111156148dd576148dd61480f565b61490e60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161483e565b81815284602083860101111561492357600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0828403121561495257600080fd5b60405160c0810167ffffffffffffffff82821081831117156149765761497661480f565b8160405282935084358352602085013591506149918261488d565b816020840152604085013591506149a78261488d565b816040840152606085013560608401526080850135608084015260a08501359150808211156149d557600080fd5b506149e2858286016148b2565b60a0830152505092915050565b600080600080600085870360e0811215614a0857600080fd5b863567ffffffffffffffff80821115614a2057600080fd5b614a2c8a838b01614940565b97506020890135965060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc084011215614a6557600080fd5b60408901955060c0890135925080831115614a7f57600080fd5b828901925089601f840112614a9357600080fd5b8235915080821115614aa457600080fd5b508860208260051b8401011115614aba57600080fd5b959894975092955050506020019190565b60005b83811015614ae6578181015183820152602001614ace565b83811115614af5576000848401525b50505050565b60008151808452614b13816020860160208601614acb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006122986020830184614afb565b600060208284031215614b6a57600080fd5b5035919050565b600060208284031215614b8357600080fd5b813567ffffffffffffffff811115614b9a57600080fd5b614ba684828501614940565b949350505050565b803567ffffffffffffffff81168114614bc657600080fd5b919050565b600060208284031215614bdd57600080fd5b61229882614bae565b600060208284031215614bf857600080fd5b81356122988161488d565b80151581146148af57600080fd5b600080600080600060a08688031215614c2957600080fd5b8535614c348161488d565b945060208601359350614c4960408701614bae565b92506060860135614c5981614c03565b9150608086013567ffffffffffffffff811115614c7557600080fd5b614c81888289016148b2565b9150509295509295909350565b8581528460208201527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b16604082015282151560f81b604882015260008251614ce2816049850160208701614acb565b919091016049019695505050505050565b600060208284031215614d0557600080fd5b81516122988161488d565b80516fffffffffffffffffffffffffffffffff81168114614bc657600080fd5b600060608284031215614d4257600080fd5b6040516060810181811067ffffffffffffffff82111715614d6557614d6561480f565b60405282518152614d7860208401614d10565b6020820152614d8960408401614d10565b60408201529392505050565b600060808284031215614da757600080fd5b6040516080810181811067ffffffffffffffff82111715614dca57614dca61480f565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b600067ffffffffffffffff80841115614e1657614e1661480f565b8360051b6020614e2781830161483e565b868152918501918181019036841115614e3f57600080fd5b865b84811015614e7357803586811115614e595760008081fd5b614e6536828b016148b2565b845250918301918301614e41565b50979650505050505050565b600060208284031215614e9157600080fd5b815161229881614c03565b600060208284031215614eae57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff80831681851681830481118215151615614f0b57614f0b614eb5565b02949350505050565b600067ffffffffffffffff808316818516808303821115614f3757614f37614eb5565b01949350505050565b600082821015614f5257614f52614eb5565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082614f9557614f95614f57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f800000000000000000000000000000000000000000000000000000000000000083141615614fe957614fe9614eb5565b500590565b6000808312837f80000000000000000000000000000000000000000000000000000000000000000183128115161561502857615028614eb5565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01831381161561505c5761505c614eb5565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000841360008413858304851182821616156150a3576150a3614eb5565b7f800000000000000000000000000000000000000000000000000000000000000060008712868205881281841616156150de576150de614eb5565b600087129250878205871284841616156150fa576150fa614eb5565b8785058712818416161561511057615110614eb5565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0384138115161561515857615158614eb5565b827f800000000000000000000000000000000000000000000000000000000000000003841281161561518c5761518c614eb5565b50500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156151ca576151ca614eb5565b500290565b6000826151de576151de614f57565b500490565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a083015261522e60c0830184614afb565b98975050505050505050565b6000821982111561524d5761524d614eb5565b500190565b805163ffffffff81168114614bc657600080fd5b805160ff81168114614bc657600080fd5b600060c0828403121561528957600080fd5b60405160c0810181811067ffffffffffffffff821117156152ac576152ac61480f565b6040526152b883615252565b81526152c660208401615266565b60208201526152d760408401615266565b60408201526152e860608401615252565b60608201526152f960808401615252565b608082015261530a60a08401614d10565b60a08201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361534757615347614eb5565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff83168061539057615390614f57565b8060ff84160691505092915050565b600060ff821660ff8416808210156153b9576153b9614eb5565b90039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080f000a"
func init() {
if err := json.Unmarshal([]byte(OptimismPortalStorageLayoutJSON), OptimismPortalStorageLayout); err != nil {
......
......@@ -122,8 +122,8 @@ type DeployConfig struct {
// FinalSystemOwner is the owner of the system on L1. Any L1 contract that is ownable has
// this account set as its owner.
FinalSystemOwner common.Address `json:"finalSystemOwner"`
// PortalGuardian represents the GUARDIAN account in the OptimismPortal. Has the ability to pause withdrawals.
PortalGuardian common.Address `json:"portalGuardian"`
// SuperchainConfigGuardian represents the GUARDIAN account in the SuperchainConfig. Has the ability to pause withdrawals.
SuperchainConfigGuardian common.Address `json:"superchainConfigGuardian"`
// BaseFeeVaultRecipient represents the recipient of fees accumulated in the BaseFeeVault.
// Can be an account on L1 or L2, depending on the BaseFeeVaultWithdrawalNetwork value.
BaseFeeVaultRecipient common.Address `json:"baseFeeVaultRecipient"`
......@@ -252,8 +252,8 @@ func (d *DeployConfig) Check() error {
if d.L2OutputOracleStartingBlockNumber == 0 {
log.Warn("L2OutputOracleStartingBlockNumber is 0, should only be 0 for fresh chains")
}
if d.PortalGuardian == (common.Address{}) {
return fmt.Errorf("%w: PortalGuardian cannot be address(0)", ErrInvalidDeployConfig)
if d.SuperchainConfigGuardian == (common.Address{}) {
return fmt.Errorf("%w: SuperchainConfigGuardian cannot be address(0)", ErrInvalidDeployConfig)
}
if d.MaxSequencerDrift == 0 {
return fmt.Errorf("%w: MaxSequencerDrift cannot be 0", ErrInvalidDeployConfig)
......
......@@ -21,7 +21,7 @@
"l1GenesisBlockGasLimit": "0x1c9c380",
"l1GenesisBlockDifficulty": "0x1",
"finalSystemOwner": "0xbcd4042de499d14e55001ccbb24a551f3b954096",
"portalGuardian": "0x0000000000000000000000000000000000000112",
"superchainConfigGuardian": "0x0000000000000000000000000000000000000112",
"finalizationPeriodSeconds": 2,
"l1GenesisBlockMixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"l1GenesisBlockCoinbase": "0x0000000000000000000000000000000000000000",
......
......@@ -269,9 +269,9 @@ func OptimismPortal(batch *safe.Batch, implementations superchain.Implementation
return err
}
var portalGuardian common.Address
var superchainConfigGuardian common.Address
if config != nil {
portalGuardian = config.PortalGuardian
superchainConfigGuardian = config.SuperchainConfigGuardian
} else {
optimismPortal, err := bindings.NewOptimismPortalCaller(common.HexToAddress(list.OptimismPortalProxy.String()), backend)
if err != nil {
......@@ -281,10 +281,10 @@ func OptimismPortal(batch *safe.Batch, implementations superchain.Implementation
if err != nil {
return err
}
portalGuardian = guardian
superchainConfigGuardian = guardian
}
calldata, err := optimismPortalABI.Pack("initialize", common.HexToAddress(list.L2OutputOracleProxy.String()), portalGuardian, common.HexToAddress(chainConfig.SystemConfigAddr.String()), false)
calldata, err := optimismPortalABI.Pack("initialize", common.HexToAddress(list.L2OutputOracleProxy.String()), superchainConfigGuardian, common.HexToAddress(chainConfig.SystemConfigAddr.String()), false)
if err != nil {
return err
}
......
GasBenchMark_L1CrossDomainMessenger:test_sendMessage_benchmark_0() (gas: 352334)
GasBenchMark_L1CrossDomainMessenger:test_sendMessage_benchmark_1() (gas: 2950496)
GasBenchMark_L1StandardBridge_Deposit:test_depositERC20_benchmark_0() (gas: 540710)
GasBenchMark_L1StandardBridge_Deposit:test_depositERC20_benchmark_1() (gas: 4052903)
GasBenchMark_L1StandardBridge_Deposit:test_depositETH_benchmark_0() (gas: 442015)
GasBenchMark_L1StandardBridge_Deposit:test_depositETH_benchmark_1() (gas: 3487764)
GasBenchMark_L1CrossDomainMessenger:test_sendMessage_benchmark_0() (gas: 352322)
GasBenchMark_L1CrossDomainMessenger:test_sendMessage_benchmark_1() (gas: 2950484)
GasBenchMark_L1StandardBridge_Deposit:test_depositERC20_benchmark_0() (gas: 540698)
GasBenchMark_L1StandardBridge_Deposit:test_depositERC20_benchmark_1() (gas: 4052891)
GasBenchMark_L1StandardBridge_Deposit:test_depositETH_benchmark_0() (gas: 442003)
GasBenchMark_L1StandardBridge_Deposit:test_depositETH_benchmark_1() (gas: 3487752)
GasBenchMark_L1StandardBridge_Finalize:test_finalizeETHWithdrawal_benchmark() (gas: 42970)
GasBenchMark_L2OutputOracle:test_proposeL2Output_benchmark() (gas: 86629)
GasBenchMark_OptimismPortal:test_depositTransaction_benchmark() (gas: 68474)
GasBenchMark_OptimismPortal:test_depositTransaction_benchmark_1() (gas: 68911)
GasBenchMark_OptimismPortal:test_proveWithdrawalTransaction_benchmark() (gas: 143100)
\ No newline at end of file
GasBenchMark_OptimismPortal:test_depositTransaction_benchmark() (gas: 68462)
GasBenchMark_OptimismPortal:test_depositTransaction_benchmark_1() (gas: 68899)
GasBenchMark_OptimismPortal:test_proveWithdrawalTransaction_benchmark() (gas: 153527)
\ No newline at end of file
......@@ -62,7 +62,8 @@
| l2Sender | address | 50 | 0 | 20 | src/L1/OptimismPortal.sol:OptimismPortal |
| finalizedWithdrawals | mapping(bytes32 => bool) | 51 | 0 | 32 | src/L1/OptimismPortal.sol:OptimismPortal |
| provenWithdrawals | mapping(bytes32 => struct OptimismPortal.ProvenWithdrawal) | 52 | 0 | 32 | src/L1/OptimismPortal.sol:OptimismPortal |
| paused | bool | 53 | 0 | 1 | src/L1/OptimismPortal.sol:OptimismPortal |
| spacer_53_0_1 | bool | 53 | 0 | 1 | src/L1/OptimismPortal.sol:OptimismPortal |
| superchainConfig | contract SuperchainConfig | 53 | 1 | 20 | src/L1/OptimismPortal.sol:OptimismPortal |
=======================
➡ src/L1/SystemConfig.sol:SystemConfig
......
......@@ -29,7 +29,7 @@
"sequencerFeeVaultWithdrawalNetwork": "remote",
"proxyAdminOwner": "0xa0Ee7A142d267C1f36714E4a8F75612F20a79720",
"finalSystemOwner": "0xa0Ee7A142d267C1f36714E4a8F75612F20a79720",
"portalGuardian": "0xa0Ee7A142d267C1f36714E4a8F75612F20a79720",
"superchainConfigGuardian": "0xa0Ee7A142d267C1f36714E4a8F75612F20a79720",
"finalizationPeriodSeconds": 2,
"fundDevAccounts": true,
"l2GenesisBlockBaseFeePerGas": "0x1",
......
{
"finalSystemOwner": "0xBc1233d0C3e6B5d53Ab455cF65A6623F6dCd7e4f",
"portalGuardian": "0xBc1233d0C3e6B5d53Ab455cF65A6623F6dCd7e4f",
"superchainConfigGuardian": "0xBc1233d0C3e6B5d53Ab455cF65A6623F6dCd7e4f",
"l1StartingBlockTag": "0x6ffc1bf3754c01f6bb9fe057c1578b87a8571ce2e9be5ca14bace6eccfd336c7",
"l1ChainID": 5,
"l2ChainID": 420,
......
{
"finalSystemOwner": "0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc",
"portalGuardian": "0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc",
"superchainConfigGuardian": "0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc",
"proxyAdminOwner": "0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc",
"l1StartingBlockTag": "earliest",
"l1ChainID": 900,
......
{
"finalSystemOwner": "0x858F0751ef8B4067f0d2668C076BDB50a8549fbF",
"portalGuardian": "0x858F0751ef8B4067f0d2668C076BDB50a8549fbF",
"superchainConfigGuardian": "0x858F0751ef8B4067f0d2668C076BDB50a8549fbF",
"l1StartingBlockTag": "0x19c7e6b18fe156e45f4cfef707294fd8f079fa9c30a7b7cd6ec1ce3682ec6a2e",
"l1ChainID": 5,
"l2ChainID": 998,
......
{
"finalSystemOwner": "0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A",
"portalGuardian": "0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A",
"superchainConfigGuardian": "0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A",
"l1StartingBlockTag": "0x438335a20d98863a4c0c97999eb2481921ccd28553eac6f913af7c12aec04108",
"l1ChainID": 1,
"l2ChainID": 10,
......
......@@ -20,7 +20,7 @@
"batchInboxAddress": "0x454A2A86132C937AD4eFc8721f1b85418f92cbCe",
"batchSenderAddress": "0x7224e05E6cF6E07aFBE1eFa09a3fA23A637DD485",
"l2GenesisRegolithTimeOffset": "0x0",
"portalGuardian": "0x45eFFbD799Ab49122eeEAB75B78D9C56A187F9A7",
"superchainConfigGuardian": "0x45eFFbD799Ab49122eeEAB75B78D9C56A187F9A7",
"l2OutputOracleSubmissionInterval": 180,
"l2OutputOracleStartingTimestamp": -1,
"l2OutputOracleProposer": "0xD457799C5ba870D609f21048c67a9b11aC611BF0",
......
......@@ -19,7 +19,7 @@
"batchInboxAddress": "0xC1B90E1e459aBBDcEc4DCF90dA45ba077d83BFc5",
"batchSenderAddress": "0x99526b0e49A95833E734EB556A6aBaFFAb0Ee167",
"l2GenesisRegolithTimeOffset": "0x0",
"portalGuardian": "0x39E13D1AB040F6EA58CE19998edCe01B3C365f84",
"superchainConfigGuardian": "0x39E13D1AB040F6EA58CE19998edCe01B3C365f84",
"l2OutputOracleSubmissionInterval": 1800,
"l2OutputOracleStartingTimestamp": -1,
"l2OutputOracleProposer": "0x69968Ce0E92d9c101BAd81de55EFbcb69603cFe3",
......
{
"finalSystemOwner": "0xfd1D2e729aE8eEe2E146c033bf4400fE75284301",
"portalGuardian": "0xfd1D2e729aE8eEe2E146c033bf4400fE75284301",
"superchainConfigGuardian": "0xfd1D2e729aE8eEe2E146c033bf4400fE75284301",
"l1StartingBlockTag": "0x48f520cf4ddaf34c8336e6e490632ea3cf1e5e93b0b2bc6e917557e31845371b",
"l1ChainID": 11155111,
"l2ChainID": 11155420,
......
......@@ -20,7 +20,7 @@
"batchInboxAddress": "0xcF628E24aC574866D3d0a7CFE4e9DA7278b7ef13",
"batchSenderAddress": "0x427c9a666d3b27873111cE3894712Bf64C6343A0",
"l2GenesisRegolithTimeOffset": "0x0",
"portalGuardian": "0x45eFFbD799Ab49122eeEAB75B78D9C56A187F9A7",
"superchainConfigGuardian": "0x45eFFbD799Ab49122eeEAB75B78D9C56A187F9A7",
"l2OutputOracleSubmissionInterval": 180,
"l2OutputOracleStartingTimestamp": 0,
"l2OutputOracleProposer": "0xa98B585654fC03E2fEa3FAB56E1C851E4f5c2B54",
......
......@@ -19,7 +19,7 @@
"batchInboxAddress": "0x6F54Ca6F6EdE96662024Ffd61BFd18f3f4e34DFf",
"batchSenderAddress": "0x625726c858dBF78c0125436C943Bf4b4bE9d9033",
"l2GenesisRegolithTimeOffset": "0x0",
"portalGuardian": "0xC72aE5c7cc9a332699305E29F68Be66c73b60542",
"superchainConfigGuardian": "0xC72aE5c7cc9a332699305E29F68Be66c73b60542",
"l2OutputOracleSubmissionInterval": 1800,
"l2OutputOracleStartingTimestamp": -1,
"l2OutputOracleProposer": "0x48247032092e7b0ecf5dEF611ad89eaf3fC888Dd",
......
......@@ -43,7 +43,7 @@ library ChainAssertions {
checkL2OutputOracle(_prox, _cfg, _l2OutputOracleStartingTimestamp, _l2OutputOracleStartingBlockNumber);
checkOptimismMintableERC20Factory(_prox);
checkL1ERC721Bridge(_prox);
checkOptimismPortal({ _contracts: _prox, _cfg: _cfg, _isPaused: false });
checkOptimismPortal({ _contracts: _prox, _cfg: _cfg, _isProxy: true });
checkProtocolVersions({ _contracts: _prox, _cfg: _cfg, _isProxy: true });
}
......@@ -135,28 +135,25 @@ library ChainAssertions {
}
/// @notice Asserts the OptimismPortal is setup correctly
function checkOptimismPortal(
Types.ContractSet memory _contracts,
DeployConfig _cfg,
bool _isPaused
)
internal
view
{
function checkOptimismPortal(Types.ContractSet memory _contracts, DeployConfig _cfg, bool _isProxy) internal view {
OptimismPortal portal = OptimismPortal(payable(_contracts.OptimismPortal));
address guardian = _cfg.portalGuardian();
address guardian = _cfg.superchainConfigGuardian();
if (guardian.code.length == 0) {
console.log("Portal guardian has no code: %s", guardian);
console.log("Guardian has no code: %s", guardian);
}
require(address(portal.L2_ORACLE()) == _contracts.L2OutputOracle);
require(address(portal.l2Oracle()) == _contracts.L2OutputOracle);
require(portal.GUARDIAN() == _cfg.portalGuardian());
require(portal.guardian() == _cfg.portalGuardian());
require(address(portal.SYSTEM_CONFIG()) == _contracts.SystemConfig);
require(address(portal.systemConfig()) == _contracts.SystemConfig);
require(portal.paused() == _isPaused);
if (_isProxy) {
require(portal.GUARDIAN() == _cfg.superchainConfigGuardian());
require(portal.guardian() == _cfg.superchainConfigGuardian());
require(address(portal.superchainConfig()) == address(_contracts.SuperchainConfig));
require(portal.paused() == SuperchainConfig(_contracts.SuperchainConfig).paused());
}
}
/// @notice Asserts that the ProtocolVersions is setup correctly
......@@ -181,9 +178,16 @@ library ChainAssertions {
}
/// @notice Asserts that the SuperchainConfig is setup correctly
function checkSuperchainConfig(Types.ContractSet memory _contracts, DeployConfig _cfg) internal view {
function checkSuperchainConfig(
Types.ContractSet memory _contracts,
DeployConfig _cfg,
bool _isPaused
)
internal
view
{
SuperchainConfig superchainConfig = SuperchainConfig(_contracts.SuperchainConfig);
require(superchainConfig.guardian() == _cfg.portalGuardian());
require(superchainConfig.paused() == false);
require(superchainConfig.guardian() == _cfg.superchainConfigGuardian());
require(superchainConfig.paused() == _isPaused);
}
}
......@@ -497,18 +497,13 @@ contract Deploy is Deployer {
/// @notice Deploy the OptimismPortal
function deployOptimismPortal() public broadcast returns (address addr_) {
console.log("Deploying OptimismPortal implementation");
address guardian = cfg.portalGuardian();
if (guardian.code.length == 0) {
console.log("Portal guardian has no code: %s", guardian);
}
L2OutputOracle l2OutputOracle = L2OutputOracle(mustGetAddress("L2OutputOracleProxy"));
SystemConfig systemConfig = SystemConfig(mustGetAddress("SystemConfigProxy"));
SuperchainConfig superchainConfig = SuperchainConfig(mustGetAddress("SuperchainConfigProxy"));
OptimismPortal portal = new OptimismPortal{ salt: _implSalt() }({
_l2Oracle: l2OutputOracle,
_guardian: guardian,
_paused: true,
_systemConfig: systemConfig
});
......@@ -520,7 +515,7 @@ contract Deploy is Deployer {
// are always proxies.
Types.ContractSet memory contracts = _proxiesUnstrict();
contracts.OptimismPortal = address(portal);
ChainAssertions.checkOptimismPortal({ _contracts: contracts, _cfg: cfg, _isPaused: true });
ChainAssertions.checkOptimismPortal({ _contracts: contracts, _cfg: cfg, _isProxy: false });
require(loadInitializedSlot("OptimismPortal", false) == 1, "OptimismPortal is not initialized");
......@@ -733,10 +728,10 @@ contract Deploy is Deployer {
_upgradeAndCallViaSafe({
_proxy: superchainConfigProxy,
_implementation: superchainConfig,
_innerCallData: abi.encodeCall(SuperchainConfig.initialize, (cfg.portalGuardian()))
_innerCallData: abi.encodeCall(SuperchainConfig.initialize, (cfg.superchainConfigGuardian()))
});
ChainAssertions.checkSuperchainConfig(_proxiesUnstrict(), cfg);
ChainAssertions.checkSuperchainConfig({ _contracts: _proxiesUnstrict(), _cfg: cfg, _isPaused: false });
}
/// @notice Initialize the DisputeGameFactory
......@@ -935,18 +930,19 @@ contract Deploy is Deployer {
console.log("Upgrading and initializing OptimismPortal proxy");
address optimismPortalProxy = mustGetAddress("OptimismPortalProxy");
address optimismPortal = mustGetAddress("OptimismPortal");
SuperchainConfig superchainConfigProxy = SuperchainConfig(mustGetAddress("SuperchainConfigProxy"));
_upgradeAndCallViaSafe({
_proxy: payable(optimismPortalProxy),
_implementation: optimismPortal,
_innerCallData: abi.encodeCall(OptimismPortal.initialize, (false))
_innerCallData: abi.encodeCall(OptimismPortal.initialize, (superchainConfigProxy))
});
OptimismPortal portal = OptimismPortal(payable(optimismPortalProxy));
string memory version = portal.version();
console.log("OptimismPortal version: %s", version);
ChainAssertions.checkOptimismPortal({ _contracts: _proxies(), _cfg: cfg, _isPaused: false });
ChainAssertions.checkOptimismPortal({ _contracts: _proxies(), _cfg: cfg, _isProxy: true });
require(loadInitializedSlot("OptimismPortal", true) == 1, "OptimismPortalProxy is not initialized");
}
......
......@@ -15,7 +15,7 @@ contract DeployConfig is Script {
string internal _json;
address public finalSystemOwner;
address public portalGuardian;
address public superchainConfigGuardian;
uint256 public l1ChainID;
uint256 public l2ChainID;
uint256 public l2BlockTime;
......@@ -64,7 +64,7 @@ contract DeployConfig is Script {
}
finalSystemOwner = stdJson.readAddress(_json, "$.finalSystemOwner");
portalGuardian = stdJson.readAddress(_json, "$.portalGuardian");
superchainConfigGuardian = stdJson.readAddress(_json, "$.superchainConfigGuardian");
l1ChainID = stdJson.readUint(_json, "$.l1ChainID");
l2ChainID = stdJson.readUint(_json, "$.l2ChainID");
l2BlockTime = stdJson.readUint(_json, "$.l2BlockTime");
......
......@@ -28,7 +28,7 @@ blockhash=$(echo "$block" | awk '/hash/ { print $2 }')
config=$(cat << EOL
{
"finalSystemOwner": "$GS_ADMIN_ADDRESS",
"portalGuardian": "$GS_ADMIN_ADDRESS",
"superchainConfigGuardian": "$GS_ADMIN_ADDRESS",
"l1StartingBlockTag": "$blockhash",
......
......@@ -6,7 +6,7 @@
"src/L1/L1ERC721Bridge.sol": "0x0e57251c77c052cec3a537b1dd4bb30eaff083a9d2b7bfb4cff342641ffd690d",
"src/L1/L1StandardBridge.sol": "0xc63b9a99a8e61321930a848c67d950a26356343e12e4376a2b12e03e44e8d8da",
"src/L1/L2OutputOracle.sol": "0xbc8acf3cdf2ea6107e2f9fad37e68a8f039f289d88b2ce002920c9ae00310450",
"src/L1/OptimismPortal.sol": "0x1f2ee207a5802d7c33a70aacd81e19c3880e593fa71c82adf02414d71066b934",
"src/L1/OptimismPortal.sol": "0x0b86047802c87795d2bf8f2c68a8accff18966564a836197dcdf81573405f7db",
"src/L1/ProtocolVersions.sol": "0x6401853c57ca29e8e9bb38173b5ac9f0856395a325324a08eeb965cc831f0419",
"src/L1/SuperchainConfig.sol": "0x316e49c6d1d34d3172916015a049039d04364aabe0f0ddfa29472354a1fe6ea9",
"src/L1/SystemConfig.sol": "0xc24454da676297e0cd718ebf017933c5b1084e389e78ebe2a69d31053ea2f051",
......
......@@ -6,16 +6,6 @@
"name": "_l2Oracle",
"type": "address"
},
{
"internalType": "address",
"name": "_guardian",
"type": "address"
},
{
"internalType": "bool",
"name": "_paused",
"type": "bool"
},
{
"internalType": "contract SystemConfig",
"name": "_systemConfig",
......@@ -298,9 +288,9 @@
{
"inputs": [
{
"internalType": "bool",
"name": "_paused",
"type": "bool"
"internalType": "contract SuperchainConfig",
"name": "_superchainConfig",
"type": "address"
}
],
"name": "initialize",
......@@ -395,20 +385,13 @@
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "paused",
"outputs": [
{
"internalType": "bool",
"name": "",
"name": "paused_",
"type": "bool"
}
],
......@@ -528,10 +511,23 @@
},
{
"inputs": [],
"name": "systemConfig",
"name": "spacer_53_0_1",
"outputs": [
{
"internalType": "contract SystemConfig",
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "superchainConfig",
"outputs": [
{
"internalType": "contract SuperchainConfig",
"name": "",
"type": "address"
}
......@@ -541,9 +537,15 @@
},
{
"inputs": [],
"name": "unpause",
"outputs": [],
"stateMutability": "nonpayable",
"name": "systemConfig",
"outputs": [
{
"internalType": "contract SystemConfig",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
......
......@@ -4,6 +4,6 @@
"label": "mapping(uint256 => struct BlockOracle.BlockInfo)",
"offset": 0,
"slot": "0",
"type": "t_mapping(t_uint256,t_struct(BlockInfo)71413_storage)"
"type": "t_mapping(t_uint256,t_struct(BlockInfo)82480_storage)"
}
]
\ No newline at end of file
......@@ -39,20 +39,20 @@
"label": "mapping(GameType => contract IDisputeGame)",
"offset": 0,
"slot": "101",
"type": "t_mapping(t_userDefinedValueType(GameType)75267,t_contract(IDisputeGame)73134)"
"type": "t_mapping(t_userDefinedValueType(GameType)86527,t_contract(IDisputeGame)84201)"
},
{
"bytes": "32",
"label": "mapping(Hash => GameId)",
"offset": 0,
"slot": "102",
"type": "t_mapping(t_userDefinedValueType(Hash)75249,t_userDefinedValueType(GameId)75261)"
"type": "t_mapping(t_userDefinedValueType(Hash)86509,t_userDefinedValueType(GameId)86521)"
},
{
"bytes": "32",
"label": "GameId[]",
"offset": 0,
"slot": "103",
"type": "t_array(t_userDefinedValueType(GameId)75261)dyn_storage"
"type": "t_array(t_userDefinedValueType(GameId)86521)dyn_storage"
}
]
\ No newline at end of file
......@@ -11,6 +11,6 @@
"label": "mapping(string => struct Drippie.DripState)",
"offset": 0,
"slot": "1",
"type": "t_mapping(t_string_memory_ptr,t_struct(DripState)89118_storage)"
"type": "t_mapping(t_string_memory_ptr,t_struct(DripState)89568_storage)"
}
]
\ No newline at end of file
......@@ -18,7 +18,7 @@
"label": "mapping(bytes32 => struct Attestation)",
"offset": 0,
"slot": "50",
"type": "t_mapping(t_bytes32,t_struct(Attestation)55326_storage)"
"type": "t_mapping(t_bytes32,t_struct(Attestation)55340_storage)"
},
{
"bytes": "32",
......
......@@ -4,14 +4,14 @@
"label": "mapping(contract IFaucetAuthModule => struct Faucet.ModuleConfig)",
"offset": 0,
"slot": "0",
"type": "t_mapping(t_contract(IFaucetAuthModule)90039,t_struct(ModuleConfig)89716_storage)"
"type": "t_mapping(t_contract(IFaucetAuthModule)90489,t_struct(ModuleConfig)90166_storage)"
},
{
"bytes": "32",
"label": "mapping(contract IFaucetAuthModule => mapping(bytes32 => uint256))",
"offset": 0,
"slot": "1",
"type": "t_mapping(t_contract(IFaucetAuthModule)90039,t_mapping(t_bytes32,t_uint256))"
"type": "t_mapping(t_contract(IFaucetAuthModule)90489,t_mapping(t_bytes32,t_uint256))"
},
{
"bytes": "32",
......
......@@ -4,49 +4,49 @@
"label": "Timestamp",
"offset": 0,
"slot": "0",
"type": "t_userDefinedValueType(Timestamp)75257"
"type": "t_userDefinedValueType(Timestamp)86517"
},
{
"bytes": "1",
"label": "enum GameStatus",
"offset": 8,
"slot": "0",
"type": "t_enum(GameStatus)75273"
"type": "t_enum(GameStatus)86533"
},
{
"bytes": "20",
"label": "contract IBondManager",
"offset": 9,
"slot": "0",
"type": "t_contract(IBondManager)73057"
"type": "t_contract(IBondManager)84124"
},
{
"bytes": "32",
"label": "Hash",
"offset": 0,
"slot": "1",
"type": "t_userDefinedValueType(Hash)75249"
"type": "t_userDefinedValueType(Hash)86509"
},
{
"bytes": "32",
"label": "struct IFaultDisputeGame.ClaimData[]",
"offset": 0,
"slot": "2",
"type": "t_array(t_struct(ClaimData)73271_storage)dyn_storage"
"type": "t_array(t_struct(ClaimData)84338_storage)dyn_storage"
},
{
"bytes": "128",
"label": "struct IFaultDisputeGame.OutputProposals",
"offset": 0,
"slot": "3",
"type": "t_struct(OutputProposals)73286_storage"
"type": "t_struct(OutputProposals)84353_storage"
},
{
"bytes": "32",
"label": "mapping(ClaimHash => bool)",
"offset": 0,
"slot": "7",
"type": "t_mapping(t_userDefinedValueType(ClaimHash)75253,t_bool)"
"type": "t_mapping(t_userDefinedValueType(ClaimHash)86513,t_bool)"
},
{
"bytes": "32",
......
......@@ -39,7 +39,7 @@
"label": "mapping(address => struct Counters.Counter)",
"offset": 0,
"slot": "5",
"type": "t_mapping(t_address,t_struct(Counter)49118_storage)"
"type": "t_mapping(t_address,t_struct(Counter)51095_storage)"
},
{
"bytes": "32",
......@@ -60,14 +60,14 @@
"label": "mapping(address => struct ERC20Votes.Checkpoint[])",
"offset": 0,
"slot": "8",
"type": "t_mapping(t_address,t_array(t_struct(Checkpoint)46264_storage)dyn_storage)"
"type": "t_mapping(t_address,t_array(t_struct(Checkpoint)48241_storage)dyn_storage)"
},
{
"bytes": "32",
"label": "struct ERC20Votes.Checkpoint[]",
"offset": 0,
"slot": "9",
"type": "t_array(t_struct(Checkpoint)46264_storage)dyn_storage"
"type": "t_array(t_struct(Checkpoint)48241_storage)dyn_storage"
},
{
"bytes": "20",
......
......@@ -32,6 +32,6 @@
"label": "struct Types.OutputProposal[]",
"offset": 0,
"slot": "3",
"type": "t_array(t_struct(OutputProposal)76122_storage)dyn_storage"
"type": "t_array(t_struct(OutputProposal)87382_storage)dyn_storage"
}
]
\ No newline at end of file
......@@ -18,7 +18,7 @@
"label": "struct ResourceMetering.ResourceParams",
"offset": 0,
"slot": "1",
"type": "t_struct(ResourceParams)66223_storage"
"type": "t_struct(ResourceParams)76287_storage"
},
{
"bytes": "1536",
......@@ -46,7 +46,7 @@
"label": "mapping(bytes32 => struct OptimismPortal.ProvenWithdrawal)",
"offset": 0,
"slot": "52",
"type": "t_mapping(t_bytes32,t_struct(ProvenWithdrawal)65283_storage)"
"type": "t_mapping(t_bytes32,t_struct(ProvenWithdrawal)75366_storage)"
},
{
"bytes": "1",
......@@ -54,5 +54,12 @@
"offset": 0,
"slot": "53",
"type": "t_bool"
},
{
"bytes": "20",
"label": "contract SuperchainConfig",
"offset": 1,
"slot": "53",
"type": "t_contract(SuperchainConfig)76810"
}
]
\ No newline at end of file
......@@ -11,7 +11,7 @@
"label": "mapping(address => enum ProxyAdmin.ProxyType)",
"offset": 0,
"slot": "1",
"type": "t_mapping(t_address,t_enum(ProxyType)79943)"
"type": "t_mapping(t_address,t_enum(ProxyType)93478)"
},
{
"bytes": "32",
......@@ -25,7 +25,7 @@
"label": "contract AddressManager",
"offset": 0,
"slot": "3",
"type": "t_contract(AddressManager)73949"
"type": "t_contract(AddressManager)85016"
},
{
"bytes": "1",
......
......@@ -11,6 +11,6 @@
"label": "mapping(address => contract AddressManager)",
"offset": 0,
"slot": "1",
"type": "t_mapping(t_address,t_contract(AddressManager)73949)"
"type": "t_mapping(t_address,t_contract(AddressManager)85016)"
}
]
\ No newline at end of file
......@@ -4,7 +4,7 @@
"label": "mapping(bytes32 => struct SchemaRecord)",
"offset": 0,
"slot": "0",
"type": "t_mapping(t_bytes32,t_struct(SchemaRecord)57706_storage)"
"type": "t_mapping(t_bytes32,t_struct(SchemaRecord)57720_storage)"
},
{
"bytes": "1568",
......
......@@ -67,6 +67,6 @@
"label": "struct ResourceMetering.ResourceConfig",
"offset": 0,
"slot": "105",
"type": "t_struct(ResourceConfig)66236_storage"
"type": "t_struct(ResourceConfig)76300_storage"
}
]
\ No newline at end of file
......@@ -5,6 +5,7 @@ import { Initializable } from "@openzeppelin/contracts/proxy/utils/Initializable
import { SafeCall } from "src/libraries/SafeCall.sol";
import { L2OutputOracle } from "src/L1/L2OutputOracle.sol";
import { SystemConfig } from "src/L1/SystemConfig.sol";
import { SuperchainConfig } from "src/L1/SuperchainConfig.sol";
import { Constants } from "src/libraries/Constants.sol";
import { Types } from "src/libraries/Types.sol";
import { Hashing } from "src/libraries/Hashing.sol";
......@@ -46,11 +47,6 @@ contract OptimismPortal is Initializable, ResourceMetering, ISemver {
/// @custom:legacy
SystemConfig public immutable SYSTEM_CONFIG;
/// @notice Address that has the ability to pause and unpause withdrawals. This will be removed in the
/// future, use `guardian` instead.
/// @custom:legacy
address public immutable GUARDIAN;
/// @notice Address of the L2 account which initiated a withdrawal in this transaction.
/// If the of this variable is the default L2 sender address, then we are NOT inside of
/// a call to finalizeWithdrawalTransaction.
......@@ -62,10 +58,13 @@ contract OptimismPortal is Initializable, ResourceMetering, ISemver {
/// @notice A mapping of withdrawal hashes to `ProvenWithdrawal` data.
mapping(bytes32 => ProvenWithdrawal) public provenWithdrawals;
/// @notice Determines if cross domain messaging is paused.
/// When set to true, withdrawals are paused.
/// This may be removed in the future.
bool public paused;
/// @custom:legacy
/// @custom:spacer paused
/// @notice Spacer for backwards compatibility.
bool public spacer_53_0_1;
/// @notice The address of the Superchain Config contract.
SuperchainConfig public superchainConfig;
/// @notice Emitted when a transaction is deposited from L1 to L2.
/// The parameters of this event are read by the rollup node and used to derive deposit
......@@ -97,30 +96,28 @@ contract OptimismPortal is Initializable, ResourceMetering, ISemver {
/// @notice Reverts when paused.
modifier whenNotPaused() {
require(paused == false, "OptimismPortal: paused");
require(paused() == false, "OptimismPortal: paused");
_;
}
/// @notice Semantic version.
/// @custom:semver 1.11.0
string public constant version = "1.11.0";
/// @custom:semver 2.0.0
string public constant version = "2.0.0";
/// @notice Constructs the OptimismPortal contract.
/// @param _l2Oracle Address of the L2OutputOracle contract.
/// @param _guardian Address that can pause withdrawals.
/// @param _paused Sets the contract's pausability state.
/// @param _systemConfig Address of the SystemConfig contract.
constructor(L2OutputOracle _l2Oracle, address _guardian, bool _paused, SystemConfig _systemConfig) {
constructor(L2OutputOracle _l2Oracle, SystemConfig _systemConfig) {
L2_ORACLE = _l2Oracle;
GUARDIAN = _guardian;
SYSTEM_CONFIG = _systemConfig;
initialize(_paused);
initialize(SuperchainConfig(address(0)));
}
/// @notice Initializer.
function initialize(bool _paused) public initializer {
/// @param _superchainConfig Address of the SuperchainConfig contract.
function initialize(SuperchainConfig _superchainConfig) public initializer {
l2Sender = Constants.DEFAULT_L2_SENDER;
paused = _paused;
superchainConfig = _superchainConfig;
__ResourceMetering_init();
}
......@@ -136,24 +133,25 @@ contract OptimismPortal is Initializable, ResourceMetering, ISemver {
return SYSTEM_CONFIG;
}
/// @notice Getter function for the address of the L2OutputOracle on this chain.
/// @notice Address of the L2OutputOracle on this chain.
function guardian() public view returns (address) {
return GUARDIAN;
/// @notice Getter function for the address of the guardian. This will be removed in the future, use
/// `SuperchainConfig.guardian()` instead.
/// @notice Address of the guardian.
/// @custom:legacy
function GUARDIAN() external view returns (address) {
return guardian();
}
/// @notice Pauses withdrawals.
function pause() external {
require(msg.sender == GUARDIAN, "OptimismPortal: only guardian can pause");
paused = true;
emit Paused(msg.sender);
/// @notice Getter function for the address of the guardian. This will be removed in the future, use
/// `SuperchainConfig.guardian()` instead.
/// @notice Address of the guardian.
/// @custom:legacy
function guardian() public view returns (address) {
return superchainConfig.guardian();
}
/// @notice Unpauses withdrawals.
function unpause() external {
require(msg.sender == GUARDIAN, "OptimismPortal: only guardian can unpause");
paused = false;
emit Unpaused(msg.sender);
/// @notice Getter for the current paused status.
function paused() public view returns (bool paused_) {
paused_ = superchainConfig.paused();
}
/// @notice Computes the minimum gas limit for a deposit.
......
......@@ -63,7 +63,7 @@ contract Initializer_Test is Bridge_Initializer {
contracts.push(
InitializeableContract({
target: address(optimismPortal),
initCalldata: abi.encodeCall(optimismPortal.initialize, (false)),
initCalldata: abi.encodeCall(optimismPortal.initialize, (superchainConfig)),
initializedSlotVal: deploy.loadInitializedSlot("OptimismPortal", true)
})
);
......
......@@ -18,12 +18,10 @@ import { ResourceMetering } from "src/L1/ResourceMetering.sol";
import { AddressAliasHelper } from "src/vendor/AddressAliasHelper.sol";
import { L2OutputOracle } from "src/L1/L2OutputOracle.sol";
import { SystemConfig } from "src/L1/SystemConfig.sol";
import { SuperchainConfig } from "src/L1/SuperchainConfig.sol";
import { OptimismPortal } from "src/L1/OptimismPortal.sol";
contract OptimismPortal_Test is CommonTest {
event Paused(address);
event Unpaused(address);
address depositor;
function setUp() public override {
......@@ -33,7 +31,7 @@ contract OptimismPortal_Test is CommonTest {
/// @dev Tests that the constructor sets the correct values.
function test_constructor_succeeds() external {
address guardian = deploy.cfg().portalGuardian();
address guardian = deploy.cfg().superchainConfigGuardian();
assertEq(address(optimismPortal.L2_ORACLE()), address(l2OutputOracle));
assertEq(address(optimismPortal.l2Oracle()), address(l2OutputOracle));
assertEq(optimismPortal.GUARDIAN(), guardian);
......@@ -49,11 +47,11 @@ contract OptimismPortal_Test is CommonTest {
assertEq(optimismPortal.paused(), false);
vm.expectEmit(address(optimismPortal));
emit Paused(guardian);
vm.expectEmit(address(superchainConfig));
emit Paused("identifier");
vm.prank(guardian);
optimismPortal.pause();
superchainConfig.pause("identifier");
assertEq(optimismPortal.paused(), true);
}
......@@ -63,9 +61,9 @@ contract OptimismPortal_Test is CommonTest {
assertEq(optimismPortal.paused(), false);
assertTrue(optimismPortal.GUARDIAN() != alice);
vm.expectRevert("OptimismPortal: only guardian can pause");
vm.expectRevert("SuperchainConfig: only guardian can pause");
vm.prank(alice);
optimismPortal.pause();
superchainConfig.pause("identifier");
assertEq(optimismPortal.paused(), false);
}
......@@ -76,13 +74,13 @@ contract OptimismPortal_Test is CommonTest {
address guardian = optimismPortal.GUARDIAN();
vm.prank(guardian);
optimismPortal.pause();
superchainConfig.pause("identifier");
assertEq(optimismPortal.paused(), true);
vm.expectEmit(address(optimismPortal));
emit Unpaused(guardian);
vm.expectEmit(address(superchainConfig));
emit Unpaused();
vm.prank(guardian);
optimismPortal.unpause();
superchainConfig.unpause();
assertEq(optimismPortal.paused(), false);
}
......@@ -92,13 +90,13 @@ contract OptimismPortal_Test is CommonTest {
address guardian = optimismPortal.GUARDIAN();
vm.prank(guardian);
optimismPortal.pause();
superchainConfig.pause("identifier");
assertEq(optimismPortal.paused(), true);
assertTrue(optimismPortal.GUARDIAN() != alice);
vm.expectRevert("OptimismPortal: only guardian can unpause");
vm.expectRevert("SuperchainConfig: only guardian can unpause");
vm.prank(alice);
optimismPortal.unpause();
superchainConfig.unpause();
assertEq(optimismPortal.paused(), true);
}
......@@ -383,7 +381,7 @@ contract OptimismPortal_FinalizeWithdrawal_Test is CommonTest {
/// @dev Tests that `proveWithdrawalTransaction` reverts when paused.
function test_proveWithdrawalTransaction_paused_reverts() external {
vm.prank(optimismPortal.GUARDIAN());
optimismPortal.pause();
superchainConfig.pause("identifier");
vm.expectRevert("OptimismPortal: paused");
optimismPortal.proveWithdrawalTransaction({
......@@ -535,7 +533,7 @@ contract OptimismPortal_FinalizeWithdrawal_Test is CommonTest {
/// @dev Tests that `finalizeWithdrawalTransaction` reverts if the contract is paused.
function test_finalizeWithdrawalTransaction_paused_reverts() external {
vm.prank(optimismPortal.GUARDIAN());
optimismPortal.pause();
superchainConfig.pause("identifier");
vm.expectRevert("OptimismPortal: paused");
optimismPortal.finalizeWithdrawalTransaction(_defaultTx);
......@@ -898,15 +896,17 @@ contract OptimismPortalUpgradeable_Test is CommonTest {
/// @dev Tests that the proxy cannot be initialized twice.
function test_initialize_cannotInitProxy_reverts() external {
SuperchainConfig superchainConfig = SuperchainConfig(deploy.mustGetAddress("SuperchainConfig"));
vm.expectRevert("Initializable: contract is already initialized");
optimismPortal.initialize({ _paused: false });
optimismPortal.initialize(superchainConfig);
}
/// @dev Tests that the implementation cannot be initialized twice.
function test_initialize_cannotInitImpl_reverts() external {
address opImpl = deploy.mustGetAddress("OptimismPortal");
SuperchainConfig superchainConfig = SuperchainConfig(deploy.mustGetAddress("SuperchainConfig"));
vm.expectRevert("Initializable: contract is already initialized");
OptimismPortal(payable(opImpl)).initialize({ _paused: false });
OptimismPortal(payable(opImpl)).initialize(superchainConfig);
}
/// @dev Tests that the proxy can be upgraded.
......
......@@ -17,7 +17,7 @@ contract SuperchainConfig_Init_Test is CommonTest {
/// @dev Tests that initialization sets the correct values. These are defined in CommonTest.sol.
function test_initialize_values_succeeds() external {
assertFalse(superchainConfig.paused());
assertEq(superchainConfig.guardian(), deploy.cfg().portalGuardian());
assertEq(superchainConfig.guardian(), deploy.cfg().superchainConfigGuardian());
}
}
......@@ -54,7 +54,7 @@ contract SuperchainConfig_Pause_Test is CommonTest {
contract SuperchainConfig_Unpause_TestFail is CommonTest {
/// @dev Tests that `unpause` reverts when called by a non-guardian.
function test_unpause_notGuardian_reverts() external {
vm.prank(deploy.cfg().portalGuardian());
vm.prank(superchainConfig.guardian());
superchainConfig.pause("identifier");
assertEq(superchainConfig.paused(), true);
......@@ -71,13 +71,12 @@ contract SuperchainConfig_Unpause_Test is CommonTest {
/// @dev Tests that `unpause` successfully unpauses
/// when called by the guardian.
function test_unpause_succeeds() external {
vm.prank(deploy.cfg().portalGuardian());
vm.startPrank(superchainConfig.guardian());
superchainConfig.pause("identifier");
assertEq(superchainConfig.paused(), true);
vm.expectEmit(address(superchainConfig));
emit Unpaused();
vm.prank(deploy.cfg().portalGuardian());
superchainConfig.unpause();
assertFalse(superchainConfig.paused());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment