creation_sourcecode: {{
    "language": "Solidity",
    "sources": {
      "MinimalBeaconProxy.sol": {
        "content": "// SPDX-License-Identifier: MIT\r\npragma solidity >=0.8.0;\r\n\r\ncontract MinimalBeaconProxy {\r\n\r\n    bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\r\n\r\n    constructor() {\r\n        assembly {\r\n            sstore(BEACON_SLOT, 0xad64702F5556Bf897d4BA30Cc8e6e54891095cCC) // store beacon address\r\n        }\r\n    }\r\n\r\n    fallback() external payable virtual {\r\n        assembly {\r\n            let p := mload(0x40)\r\n            // Call GammaPoolFactory -> getProtocol(uint16)\r\n            mstore(p, 0xd2c7c2a400000000000000000000000000000000000000000000000000000000)\r\n            mstore(add(p, 4), 0x0001)\r\n            let result := staticcall(gas(), 0xFD513630F697A9C1731F196185fb9ebA6eAAc20B, p, 0x24, 0x80, 0x20)\r\n            if iszero(result) {\r\n                revert(0, returndatasize())\r\n            }\r\n            let impl := mload(0x80)\r\n            // Copy msg.data. We take full control of memory in this inline assembly\r\n            // block because it will not return to Solidity code. We overwrite the\r\n            // Solidity scratch pad at memory position 0.\r\n            calldatacopy(0, 0, calldatasize())\r\n            // Call the implementation.\r\n            // out and outsize are 0 because we don't know the size yet.\r\n            result := delegatecall(gas(), impl, 0, calldatasize(), 0, 0)\r\n            // Copy the returned data.\r\n            returndatacopy(0, 0, returndatasize())\r\n            switch result\r\n            // delegatecall returns 0 on error.\r\n            case 0 {\r\n                revert(0, returndatasize())\r\n            }\r\n            default {\r\n                return(0, returndatasize())\r\n            }\r\n        }\r\n    }\r\n}"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "evmVersion": "paris",
      "metadata": {
        "bytecodeHash": "none"
      },
      "outputSelection": {
        "*": {
          "*": [
            "evm.bytecode",
            "evm.deployedBytecode",
            "abi"
          ]
        }
      }
    }
  }}