=======================
👁👁 STORAGE LAYOUT snapshot 👁👁
=======================

=======================
➡ contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger
=======================

| Name               | Type                     | Slot | Offset | Bytes | Contract                                                       |
|--------------------|--------------------------|------|--------|-------|----------------------------------------------------------------|
| spacer_0_0_20      | address                  | 0    | 0      | 20    | contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger |
| _initialized       | uint8                    | 0    | 20     | 1     | contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger |
| _initializing      | bool                     | 0    | 21     | 1     | contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger |
| spacer_1_0_1600    | uint256[50]              | 1    | 0      | 1600  | contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger |
| spacer_51_0_20     | address                  | 51   | 0      | 20    | contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger |
| spacer_52_0_1568   | uint256[49]              | 52   | 0      | 1568  | contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger |
| spacer_101_0_1     | bool                     | 101  | 0      | 1     | contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger |
| spacer_102_0_1568  | uint256[49]              | 102  | 0      | 1568  | contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger |
| spacer_151_0_32    | uint256                  | 151  | 0      | 32    | contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger |
| spacer_152_0_1568  | uint256[49]              | 152  | 0      | 1568  | contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger |
| spacer_201_0_32    | mapping(bytes32 => bool) | 201  | 0      | 32    | contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger |
| spacer_202_0_32    | mapping(bytes32 => bool) | 202  | 0      | 32    | contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger |
| successfulMessages | mapping(bytes32 => bool) | 203  | 0      | 32    | contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger |
| xDomainMsgSender   | address                  | 204  | 0      | 20    | contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger |
| msgNonce           | uint240                  | 205  | 0      | 30    | contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger |
| failedMessages     | mapping(bytes32 => bool) | 206  | 0      | 32    | contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger |
| __gap              | uint256[42]              | 207  | 0      | 1344  | contracts/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger |

=======================
➡ contracts/L1/L1StandardBridge.sol:L1StandardBridge
=======================

| Name          | Type                                            | Slot | Offset | Bytes | Contract                                           |
|---------------|-------------------------------------------------|------|--------|-------|----------------------------------------------------|
| spacer_0_0_20 | address                                         | 0    | 0      | 20    | contracts/L1/L1StandardBridge.sol:L1StandardBridge |
| spacer_1_0_20 | address                                         | 1    | 0      | 20    | contracts/L1/L1StandardBridge.sol:L1StandardBridge |
| deposits      | mapping(address => mapping(address => uint256)) | 2    | 0      | 32    | contracts/L1/L1StandardBridge.sol:L1StandardBridge |
| __gap         | uint256[47]                                     | 3    | 0      | 1504  | contracts/L1/L1StandardBridge.sol:L1StandardBridge |

=======================
➡ contracts/L1/L2OutputOracle.sol:L2OutputOracle
=======================

| Name                | Type                          | Slot | Offset | Bytes | Contract                                       |
|---------------------|-------------------------------|------|--------|-------|------------------------------------------------|
| _initialized        | uint8                         | 0    | 0      | 1     | contracts/L1/L2OutputOracle.sol:L2OutputOracle |
| _initializing       | bool                          | 0    | 1      | 1     | contracts/L1/L2OutputOracle.sol:L2OutputOracle |
| startingBlockNumber | uint256                       | 1    | 0      | 32    | contracts/L1/L2OutputOracle.sol:L2OutputOracle |
| startingTimestamp   | uint256                       | 2    | 0      | 32    | contracts/L1/L2OutputOracle.sol:L2OutputOracle |
| l2Outputs           | struct Types.OutputProposal[] | 3    | 0      | 32    | contracts/L1/L2OutputOracle.sol:L2OutputOracle |

=======================
➡ contracts/L1/OptimismPortal.sol:OptimismPortal
=======================

| Name                 | Type                                                       | Slot | Offset | Bytes | Contract                                       |
|----------------------|------------------------------------------------------------|------|--------|-------|------------------------------------------------|
| _initialized         | uint8                                                      | 0    | 0      | 1     | contracts/L1/OptimismPortal.sol:OptimismPortal |
| _initializing        | bool                                                       | 0    | 1      | 1     | contracts/L1/OptimismPortal.sol:OptimismPortal |
| params               | struct ResourceMetering.ResourceParams                     | 1    | 0      | 32    | contracts/L1/OptimismPortal.sol:OptimismPortal |
| __gap                | uint256[48]                                                | 2    | 0      | 1536  | contracts/L1/OptimismPortal.sol:OptimismPortal |
| l2Sender             | address                                                    | 50   | 0      | 20    | contracts/L1/OptimismPortal.sol:OptimismPortal |
| finalizedWithdrawals | mapping(bytes32 => bool)                                   | 51   | 0      | 32    | contracts/L1/OptimismPortal.sol:OptimismPortal |
| provenWithdrawals    | mapping(bytes32 => struct OptimismPortal.ProvenWithdrawal) | 52   | 0      | 32    | contracts/L1/OptimismPortal.sol:OptimismPortal |
| paused               | bool                                                       | 53   | 0      | 1     | contracts/L1/OptimismPortal.sol:OptimismPortal |

=======================
➡ contracts/L1/SystemConfig.sol:SystemConfig
=======================

| Name            | Type                                   | Slot | Offset | Bytes | Contract                                   |
|-----------------|----------------------------------------|------|--------|-------|--------------------------------------------|
| _initialized    | uint8                                  | 0    | 0      | 1     | contracts/L1/SystemConfig.sol:SystemConfig |
| _initializing   | bool                                   | 0    | 1      | 1     | contracts/L1/SystemConfig.sol:SystemConfig |
| __gap           | uint256[50]                            | 1    | 0      | 1600  | contracts/L1/SystemConfig.sol:SystemConfig |
| _owner          | address                                | 51   | 0      | 20    | contracts/L1/SystemConfig.sol:SystemConfig |
| __gap           | uint256[49]                            | 52   | 0      | 1568  | contracts/L1/SystemConfig.sol:SystemConfig |
| overhead        | uint256                                | 101  | 0      | 32    | contracts/L1/SystemConfig.sol:SystemConfig |
| scalar          | uint256                                | 102  | 0      | 32    | contracts/L1/SystemConfig.sol:SystemConfig |
| batcherHash     | bytes32                                | 103  | 0      | 32    | contracts/L1/SystemConfig.sol:SystemConfig |
| gasLimit        | uint64                                 | 104  | 0      | 8     | contracts/L1/SystemConfig.sol:SystemConfig |
| _resourceConfig | struct ResourceMetering.ResourceConfig | 105  | 0      | 32    | contracts/L1/SystemConfig.sol:SystemConfig |

=======================
➡ contracts/legacy/DeployerWhitelist.sol:DeployerWhitelist
=======================

| Name      | Type                     | Slot | Offset | Bytes | Contract                                                 |
|-----------|--------------------------|------|--------|-------|----------------------------------------------------------|
| owner     | address                  | 0    | 0      | 20    | contracts/legacy/DeployerWhitelist.sol:DeployerWhitelist |
| whitelist | mapping(address => bool) | 1    | 0      | 32    | contracts/legacy/DeployerWhitelist.sol:DeployerWhitelist |

=======================
➡ contracts/L2/L1Block.sol:L1Block
=======================

| Name           | Type    | Slot | Offset | Bytes | Contract                         |
|----------------|---------|------|--------|-------|----------------------------------|
| number         | uint64  | 0    | 0      | 8     | contracts/L2/L1Block.sol:L1Block |
| timestamp      | uint64  | 0    | 8      | 8     | contracts/L2/L1Block.sol:L1Block |
| basefee        | uint256 | 1    | 0      | 32    | contracts/L2/L1Block.sol:L1Block |
| hash           | bytes32 | 2    | 0      | 32    | contracts/L2/L1Block.sol:L1Block |
| sequenceNumber | uint64  | 3    | 0      | 8     | contracts/L2/L1Block.sol:L1Block |
| batcherHash    | bytes32 | 4    | 0      | 32    | contracts/L2/L1Block.sol:L1Block |
| l1FeeOverhead  | uint256 | 5    | 0      | 32    | contracts/L2/L1Block.sol:L1Block |
| l1FeeScalar    | uint256 | 6    | 0      | 32    | contracts/L2/L1Block.sol:L1Block |

=======================
➡ contracts/legacy/L1BlockNumber.sol:L1BlockNumber
=======================

| Name | Type | Slot | Offset | Bytes | Contract |
|------|------|------|--------|-------|----------|

=======================
➡ contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger
=======================

| Name               | Type                     | Slot | Offset | Bytes | Contract                                                       |
|--------------------|--------------------------|------|--------|-------|----------------------------------------------------------------|
| spacer_0_0_20      | address                  | 0    | 0      | 20    | contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger |
| _initialized       | uint8                    | 0    | 20     | 1     | contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger |
| _initializing      | bool                     | 0    | 21     | 1     | contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger |
| spacer_1_0_1600    | uint256[50]              | 1    | 0      | 1600  | contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger |
| spacer_51_0_20     | address                  | 51   | 0      | 20    | contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger |
| spacer_52_0_1568   | uint256[49]              | 52   | 0      | 1568  | contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger |
| spacer_101_0_1     | bool                     | 101  | 0      | 1     | contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger |
| spacer_102_0_1568  | uint256[49]              | 102  | 0      | 1568  | contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger |
| spacer_151_0_32    | uint256                  | 151  | 0      | 32    | contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger |
| spacer_152_0_1568  | uint256[49]              | 152  | 0      | 1568  | contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger |
| spacer_201_0_32    | mapping(bytes32 => bool) | 201  | 0      | 32    | contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger |
| spacer_202_0_32    | mapping(bytes32 => bool) | 202  | 0      | 32    | contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger |
| successfulMessages | mapping(bytes32 => bool) | 203  | 0      | 32    | contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger |
| xDomainMsgSender   | address                  | 204  | 0      | 20    | contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger |
| msgNonce           | uint240                  | 205  | 0      | 30    | contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger |
| failedMessages     | mapping(bytes32 => bool) | 206  | 0      | 32    | contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger |
| __gap              | uint256[42]              | 207  | 0      | 1344  | contracts/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger |

=======================
➡ contracts/L2/L2StandardBridge.sol:L2StandardBridge
=======================

| Name          | Type                                            | Slot | Offset | Bytes | Contract                                           |
|---------------|-------------------------------------------------|------|--------|-------|----------------------------------------------------|
| spacer_0_0_20 | address                                         | 0    | 0      | 20    | contracts/L2/L2StandardBridge.sol:L2StandardBridge |
| spacer_1_0_20 | address                                         | 1    | 0      | 20    | contracts/L2/L2StandardBridge.sol:L2StandardBridge |
| deposits      | mapping(address => mapping(address => uint256)) | 2    | 0      | 32    | contracts/L2/L2StandardBridge.sol:L2StandardBridge |
| __gap         | uint256[47]                                     | 3    | 0      | 1504  | contracts/L2/L2StandardBridge.sol:L2StandardBridge |

=======================
➡ contracts/L2/L2ToL1MessagePasser.sol:L2ToL1MessagePasser
=======================

| Name         | Type                     | Slot | Offset | Bytes | Contract                                                 |
|--------------|--------------------------|------|--------|-------|----------------------------------------------------------|
| sentMessages | mapping(bytes32 => bool) | 0    | 0      | 32    | contracts/L2/L2ToL1MessagePasser.sol:L2ToL1MessagePasser |
| msgNonce     | uint240                  | 1    | 0      | 30    | contracts/L2/L2ToL1MessagePasser.sol:L2ToL1MessagePasser |

=======================
➡ contracts/legacy/LegacyERC20ETH.sol:LegacyERC20ETH
=======================

| Name         | Type                                            | Slot | Offset | Bytes | Contract                                           |
|--------------|-------------------------------------------------|------|--------|-------|----------------------------------------------------|
| _balances    | mapping(address => uint256)                     | 0    | 0      | 32    | contracts/legacy/LegacyERC20ETH.sol:LegacyERC20ETH |
| _allowances  | mapping(address => mapping(address => uint256)) | 1    | 0      | 32    | contracts/legacy/LegacyERC20ETH.sol:LegacyERC20ETH |
| _totalSupply | uint256                                         | 2    | 0      | 32    | contracts/legacy/LegacyERC20ETH.sol:LegacyERC20ETH |
| _name        | string                                          | 3    | 0      | 32    | contracts/legacy/LegacyERC20ETH.sol:LegacyERC20ETH |
| _symbol      | string                                          | 4    | 0      | 32    | contracts/legacy/LegacyERC20ETH.sol:LegacyERC20ETH |

=======================
➡ contracts/L2/SequencerFeeVault.sol:SequencerFeeVault
=======================

| Name           | Type    | Slot | Offset | Bytes | Contract                                             |
|----------------|---------|------|--------|-------|------------------------------------------------------|
| totalProcessed | uint256 | 0    | 0      | 32    | contracts/L2/SequencerFeeVault.sol:SequencerFeeVault |

=======================
➡ contracts/L2/BaseFeeVault.sol:BaseFeeVault
=======================

| Name           | Type    | Slot | Offset | Bytes | Contract                                   |
|----------------|---------|------|--------|-------|--------------------------------------------|
| totalProcessed | uint256 | 0    | 0      | 32    | contracts/L2/BaseFeeVault.sol:BaseFeeVault |

=======================
➡ contracts/L2/L1FeeVault.sol:L1FeeVault
=======================

| Name           | Type    | Slot | Offset | Bytes | Contract                               |
|----------------|---------|------|--------|-------|----------------------------------------|
| totalProcessed | uint256 | 0    | 0      | 32    | contracts/L2/L1FeeVault.sol:L1FeeVault |

=======================
➡ contracts/vendor/WETH9.sol:WETH9
=======================

| Name      | Type                                            | Slot | Offset | Bytes | Contract                         |
|-----------|-------------------------------------------------|------|--------|-------|----------------------------------|
| name      | string                                          | 0    | 0      | 32    | contracts/vendor/WETH9.sol:WETH9 |
| symbol    | string                                          | 1    | 0      | 32    | contracts/vendor/WETH9.sol:WETH9 |
| decimals  | uint8                                           | 2    | 0      | 1     | contracts/vendor/WETH9.sol:WETH9 |
| balanceOf | mapping(address => uint256)                     | 3    | 0      | 32    | contracts/vendor/WETH9.sol:WETH9 |
| allowance | mapping(address => mapping(address => uint256)) | 4    | 0      | 32    | contracts/vendor/WETH9.sol:WETH9 |

=======================
➡ contracts/universal/ProxyAdmin.sol:ProxyAdmin
=======================

| Name               | Type                                          | Slot | Offset | Bytes | Contract                                      |
|--------------------|-----------------------------------------------|------|--------|-------|-----------------------------------------------|
| _owner             | address                                       | 0    | 0      | 20    | contracts/universal/ProxyAdmin.sol:ProxyAdmin |
| proxyType          | mapping(address => enum ProxyAdmin.ProxyType) | 1    | 0      | 32    | contracts/universal/ProxyAdmin.sol:ProxyAdmin |
| implementationName | mapping(address => string)                    | 2    | 0      | 32    | contracts/universal/ProxyAdmin.sol:ProxyAdmin |
| addressManager     | contract AddressManager                       | 3    | 0      | 20    | contracts/universal/ProxyAdmin.sol:ProxyAdmin |
| upgrading          | bool                                          | 3    | 20     | 1     | contracts/universal/ProxyAdmin.sol:ProxyAdmin |

=======================
➡ contracts/universal/Proxy.sol:Proxy
=======================

| Name | Type | Slot | Offset | Bytes | Contract |
|------|------|------|--------|-------|----------|

=======================
➡ contracts/legacy/L1ChugSplashProxy.sol:L1ChugSplashProxy
=======================

| Name | Type | Slot | Offset | Bytes | Contract |
|------|------|------|--------|-------|----------|

=======================
➡ contracts/universal/OptimismMintableERC20.sol:OptimismMintableERC20
=======================

| Name         | Type                                            | Slot | Offset | Bytes | Contract                                                            |
|--------------|-------------------------------------------------|------|--------|-------|---------------------------------------------------------------------|
| _balances    | mapping(address => uint256)                     | 0    | 0      | 32    | contracts/universal/OptimismMintableERC20.sol:OptimismMintableERC20 |
| _allowances  | mapping(address => mapping(address => uint256)) | 1    | 0      | 32    | contracts/universal/OptimismMintableERC20.sol:OptimismMintableERC20 |
| _totalSupply | uint256                                         | 2    | 0      | 32    | contracts/universal/OptimismMintableERC20.sol:OptimismMintableERC20 |
| _name        | string                                          | 3    | 0      | 32    | contracts/universal/OptimismMintableERC20.sol:OptimismMintableERC20 |
| _symbol      | string                                          | 4    | 0      | 32    | contracts/universal/OptimismMintableERC20.sol:OptimismMintableERC20 |

=======================
➡ contracts/universal/OptimismMintableERC20Factory.sol:OptimismMintableERC20Factory
=======================

| Name | Type | Slot | Offset | Bytes | Contract |
|------|------|------|--------|-------|----------|

=======================
➡ contracts/dispute/DisputeGameFactory.sol:DisputeGameFactory
=======================

| Name             | Type                                       | Slot | Offset | Bytes | Contract                                                    |
|------------------|--------------------------------------------|------|--------|-------|-------------------------------------------------------------|
| _initialized     | uint8                                      | 0    | 0      | 1     | contracts/dispute/DisputeGameFactory.sol:DisputeGameFactory |
| _initializing    | bool                                       | 0    | 1      | 1     | contracts/dispute/DisputeGameFactory.sol:DisputeGameFactory |
| __gap            | uint256[50]                                | 1    | 0      | 1600  | contracts/dispute/DisputeGameFactory.sol:DisputeGameFactory |
| _owner           | address                                    | 51   | 0      | 20    | contracts/dispute/DisputeGameFactory.sol:DisputeGameFactory |
| __gap            | uint256[49]                                | 52   | 0      | 1568  | contracts/dispute/DisputeGameFactory.sol:DisputeGameFactory |
| gameImpls        | mapping(GameType => contract IDisputeGame) | 101  | 0      | 32    | contracts/dispute/DisputeGameFactory.sol:DisputeGameFactory |
| _disputeGames    | mapping(Hash => GameId)                    | 102  | 0      | 32    | contracts/dispute/DisputeGameFactory.sol:DisputeGameFactory |
| _disputeGameList | GameId[]                                   | 103  | 0      | 32    | contracts/dispute/DisputeGameFactory.sol:DisputeGameFactory |
