{
  "contractName": "GnosisSafeProxy",
  "sourceName": "@gnosis.pm/safe-contracts/contracts/proxies/GnosisSafeProxy.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_singleton",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "stateMutability": "payable",
      "type": "fallback"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5060405161017338038061017383398101604081905261002f916100b9565b6001600160a01b0381166100945760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642073696e676c65746f6e20616464726573732070726f766964604482015261195960f21b606482015260840160405180910390fd5b600080546001600160a01b0319166001600160a01b03929092169190911790556100e9565b6000602082840312156100cb57600080fd5b81516001600160a01b03811681146100e257600080fd5b9392505050565b607c806100f76000396000f3fe6080604052600080546001600160a01b0316813563530ca43760e11b1415602857808252602082f35b3682833781823684845af490503d82833e806041573d82fd5b503d81f3fea26469706673582212205de501b8a76b0ec88692df4fe3cf0a2a23b5b488f5c9ce08c24a1c543d6e357864736f6c634300080a0033",
  "deployedBytecode": "0x6080604052600080546001600160a01b0316813563530ca43760e11b1415602857808252602082f35b3682833781823684845af490503d82833e806041573d82fd5b503d81f3fea26469706673582212205de501b8a76b0ec88692df4fe3cf0a2a23b5b488f5c9ce08c24a1c543d6e357864736f6c634300080a0033",
  "linkReferences": {},
  "deployedLinkReferences": {},
  "devdoc": {
    "author": "Stefan George - <stefan@gnosis.io>Richard Meissner - <richard@gnosis.io>",
    "kind": "dev",
    "methods": {
      "constructor": {
        "details": "Constructor function sets address of singleton contract.",
        "params": {
          "_singleton": "Singleton address."
        }
      }
    },
    "title": "GnosisSafeProxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.",
    "version": 1
  },
  "evm": {
    "bytecode": {
      "functionDebugData": {
        "@_2909": {
          "entryPoint": null,
          "id": 2909,
          "parameterSlots": 1,
          "returnSlots": 0
        },
        "abi_decode_tuple_t_address_fromMemory": {
          "entryPoint": 185,
          "id": null,
          "parameterSlots": 2,
          "returnSlots": 1
        },
        "abi_encode_tuple_t_stringliteral_f4a46125d24bcf992f3a005546c0f3eafebe1847b2ccd7a103878ded65e88250__to_t_string_memory_ptr__fromStack_reversed": {
          "entryPoint": null,
          "id": null,
          "parameterSlots": 1,
          "returnSlots": 1
        }
      },
      "generatedSources": [
        {
          "ast": {
            "nodeType": "YulBlock",
            "src": "0:709:86",
            "statements": [
              {
                "nodeType": "YulBlock",
                "src": "6:3:86",
                "statements": []
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "95:209:86",
                  "statements": [
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "141:16:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "150:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "153:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "143:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "143:12:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "143:12:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "dataEnd",
                                "nodeType": "YulIdentifier",
                                "src": "116:7:86"
                              },
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "125:9:86"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "112:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "112:23:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "137:2:86",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "108:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "108:32:86"
                      },
                      "nodeType": "YulIf",
                      "src": "105:52:86"
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "166:29:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "185:9:86"
                          }
                        ],
                        "functionName": {
                          "name": "mload",
                          "nodeType": "YulIdentifier",
                          "src": "179:5:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "179:16:86"
                      },
                      "variables": [
                        {
                          "name": "value",
                          "nodeType": "YulTypedName",
                          "src": "170:5:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "258:16:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "267:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "270:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "260:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "260:12:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "260:12:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "217:5:86"
                              },
                              {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "228:5:86"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "243:3:86",
                                            "type": "",
                                            "value": "160"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "248:1:86",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "239:3:86"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "239:11:86"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "252:1:86",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "235:3:86"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "235:19:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "224:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "224:31:86"
                              }
                            ],
                            "functionName": {
                              "name": "eq",
                              "nodeType": "YulIdentifier",
                              "src": "214:2:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "214:42:86"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "207:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "207:50:86"
                      },
                      "nodeType": "YulIf",
                      "src": "204:70:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "283:15:86",
                      "value": {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "293:5:86"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "283:6:86"
                        }
                      ]
                    }
                  ]
                },
                "name": "abi_decode_tuple_t_address_fromMemory",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "61:9:86",
                    "type": ""
                  },
                  {
                    "name": "dataEnd",
                    "nodeType": "YulTypedName",
                    "src": "72:7:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "value0",
                    "nodeType": "YulTypedName",
                    "src": "84:6:86",
                    "type": ""
                  }
                ],
                "src": "14:290:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "483:224:86",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "500:9:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "511:2:86",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "493:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "493:21:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "493:21:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "534:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "545:2:86",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "530:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "530:18:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "550:2:86",
                            "type": "",
                            "value": "34"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "523:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "523:30:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "523:30:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "573:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "584:2:86",
                                "type": "",
                                "value": "64"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "569:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "569:18:86"
                          },
                          {
                            "hexValue": "496e76616c69642073696e676c65746f6e20616464726573732070726f766964",
                            "kind": "string",
                            "nodeType": "YulLiteral",
                            "src": "589:34:86",
                            "type": "",
                            "value": "Invalid singleton address provid"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "562:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "562:62:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "562:62:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "644:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "655:2:86",
                                "type": "",
                                "value": "96"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "640:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "640:18:86"
                          },
                          {
                            "hexValue": "6564",
                            "kind": "string",
                            "nodeType": "YulLiteral",
                            "src": "660:4:86",
                            "type": "",
                            "value": "ed"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "633:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "633:32:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "633:32:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "674:27:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "686:9:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "697:3:86",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "682:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "682:19:86"
                      },
                      "variableNames": [
                        {
                          "name": "tail",
                          "nodeType": "YulIdentifier",
                          "src": "674:4:86"
                        }
                      ]
                    }
                  ]
                },
                "name": "abi_encode_tuple_t_stringliteral_f4a46125d24bcf992f3a005546c0f3eafebe1847b2ccd7a103878ded65e88250__to_t_string_memory_ptr__fromStack_reversed",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "460:9:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "tail",
                    "nodeType": "YulTypedName",
                    "src": "474:4:86",
                    "type": ""
                  }
                ],
                "src": "309:398:86"
              }
            ]
          },
          "contents": "{\n    { }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_f4a46125d24bcf992f3a005546c0f3eafebe1847b2ccd7a103878ded65e88250__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"Invalid singleton address provid\")\n        mstore(add(headStart, 96), \"ed\")\n        tail := add(headStart, 128)\n    }\n}",
          "id": 86,
          "language": "Yul",
          "name": "#utility.yul"
        }
      ],
      "linkReferences": {},
      "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x173 CODESIZE SUB DUP1 PUSH2 0x173 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0xB9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x94 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C69642073696E676C65746F6E20616464726573732070726F766964 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x1959 PUSH1 0xF2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0xE9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x7C DUP1 PUSH2 0xF7 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 CALLDATALOAD PUSH4 0x530CA437 PUSH1 0xE1 SHL EQ ISZERO PUSH1 0x28 JUMPI DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 RETURN JUMPDEST CALLDATASIZE DUP3 DUP4 CALLDATACOPY DUP2 DUP3 CALLDATASIZE DUP5 DUP5 GAS DELEGATECALL SWAP1 POP RETURNDATASIZE DUP3 DUP4 RETURNDATACOPY DUP1 PUSH1 0x41 JUMPI RETURNDATASIZE DUP3 REVERT JUMPDEST POP RETURNDATASIZE DUP2 RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5D 0xE5 ADD 0xB8 0xA7 PUSH12 0xEC88692DF4FE3CF0A2A23B5 0xB4 DUP9 CREATE2 0xC9 0xCE ADDMOD 0xC2 0x4A SHR SLOAD RETURNDATASIZE PUSH15 0x357864736F6C634300080A00330000 ",
      "sourceMap": "512:1497:24:-:0;;;946:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;996:24:24;;988:71;;;;-1:-1:-1;;;988:71:24;;511:2:86;988:71:24;;;493:21:86;550:2;530:18;;;523:30;589:34;569:18;;;562:62;-1:-1:-1;;;640:18:86;;;633:32;682:19;;988:71:24;;;;;;;;1069:9;:22;;-1:-1:-1;;;;;;1069:22:24;-1:-1:-1;;;;;1069:22:24;;;;;;;;;;512:1497;;14:290:86;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:86;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:86:o;309:398::-;512:1497:24;;;;;;"
    },
    "deployedBytecode": {
      "functionDebugData": {
        "@_2915": {
          "entryPoint": null,
          "id": 2915,
          "parameterSlots": 0,
          "returnSlots": 0
        }
      },
      "generatedSources": [],
      "immutableReferences": {},
      "linkReferences": {},
      "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 CALLDATALOAD PUSH4 0x530CA437 PUSH1 0xE1 SHL EQ ISZERO PUSH1 0x28 JUMPI DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 RETURN JUMPDEST CALLDATASIZE DUP3 DUP4 CALLDATACOPY DUP2 DUP3 CALLDATASIZE DUP5 DUP5 GAS DELEGATECALL SWAP1 POP RETURNDATASIZE DUP3 DUP4 RETURNDATACOPY DUP1 PUSH1 0x41 JUMPI RETURNDATASIZE DUP3 REVERT JUMPDEST POP RETURNDATASIZE DUP2 RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5D 0xE5 ADD 0xB8 0xA7 PUSH12 0xEC88692DF4FE3CF0A2A23B5 0xB4 DUP9 CREATE2 0xC9 0xCE ADDMOD 0xC2 0x4A SHR SLOAD RETURNDATASIZE PUSH15 0x357864736F6C634300080A00330000 ",
      "sourceMap": "512:1497:24:-:0;;;1344:1;1338:8;;-1:-1:-1;;;;;1334:57:24;1509:15;;-1:-1:-1;;;1506:87:24;1503:176;;;1622:10;1344:1;1612:21;1660:4;1344:1;1650:15;1503:176;1711:14;1344:1;;1692:34;1344:1;;1711:14;1344:1;1774:10;1767:5;1754:56;1739:71;;1844:16;1344:1;;1823:38;1880:7;1874:77;;1920:16;1344:1;1910:27;1874:77;;1974:16;1344:1;1964:27"
    },
    "gasEstimates": {
      "creation": {
        "codeDepositCost": "24800",
        "executionCost": "infinite",
        "totalCost": "infinite"
      },
      "external": {
        "": "infinite"
      }
    },
    "methodIdentifiers": {}
  },
  "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_singleton\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"author\":\"Stefan George - <stefan@gnosis.io>Richard Meissner - <richard@gnosis.io>\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Constructor function sets address of singleton contract.\",\"params\":{\"_singleton\":\"Singleton address.\"}}},\"title\":\"GnosisSafeProxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@gnosis.pm/safe-contracts/contracts/proxies/GnosisSafeProxy.sol\":\"GnosisSafeProxy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@gnosis.pm/safe-contracts/contracts/proxies/GnosisSafeProxy.sol\":{\"content\":\"// SPDX-License-Identifier: LGPL-3.0-only\\npragma solidity >=0.7.0 <0.9.0;\\n\\n/// @title IProxy - Helper interface to access masterCopy of the Proxy on-chain\\n/// @author Richard Meissner - <richard@gnosis.io>\\ninterface IProxy {\\n    function masterCopy() external view returns (address);\\n}\\n\\n/// @title GnosisSafeProxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\\n/// @author Stefan George - <stefan@gnosis.io>\\n/// @author Richard Meissner - <richard@gnosis.io>\\ncontract GnosisSafeProxy {\\n    // singleton always needs to be first declared variable, to ensure that it is at the same location in the contracts to which calls are delegated.\\n    // To reduce deployment costs this variable is internal and needs to be retrieved via `getStorageAt`\\n    address internal singleton;\\n\\n    /// @dev Constructor function sets address of singleton contract.\\n    /// @param _singleton Singleton address.\\n    constructor(address _singleton) {\\n        require(_singleton != address(0), \\\"Invalid singleton address provided\\\");\\n        singleton = _singleton;\\n    }\\n\\n    /// @dev Fallback function forwards all transactions and returns all received return data.\\n    fallback() external payable {\\n        // solhint-disable-next-line no-inline-assembly\\n        assembly {\\n            let _singleton := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\\n            // 0xa619486e == keccak(\\\"masterCopy()\\\"). The value is right padded to 32-bytes with 0s\\n            if eq(calldataload(0), 0xa619486e00000000000000000000000000000000000000000000000000000000) {\\n                mstore(0, _singleton)\\n                return(0, 0x20)\\n            }\\n            calldatacopy(0, 0, calldatasize())\\n            let success := delegatecall(gas(), _singleton, 0, calldatasize(), 0, 0)\\n            returndatacopy(0, 0, returndatasize())\\n            if eq(success, 0) {\\n                revert(0, returndatasize())\\n            }\\n            return(0, returndatasize())\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x3bfdd453d9f896f7029d15bcafd11886957b320ad1764309d9f74fa059715249\",\"license\":\"LGPL-3.0-only\"}},\"version\":1}",
  "storageLayout": {
    "storage": [
      {
        "astId": 2888,
        "contract": "@gnosis.pm/safe-contracts/contracts/proxies/GnosisSafeProxy.sol:GnosisSafeProxy",
        "label": "singleton",
        "offset": 0,
        "slot": "0",
        "type": "t_address"
      }
    ],
    "types": {
      "t_address": {
        "encoding": "inplace",
        "label": "address",
        "numberOfBytes": "20"
      }
    }
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}