{
  "contractName": "MultiSend",
  "sourceName": "@gnosis.pm/safe-contracts/contracts/libraries/MultiSend.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "transactions",
          "type": "bytes"
        }
      ],
      "name": "multiSend",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a060405234801561001057600080fd5b503060805260805161025361002f6000396000604301526102536000f3fe60806040526004361061001e5760003560e01c80638d80ff0a14610023575b600080fd5b61003661003136600461016c565b610038565b005b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156100ce5760405162461bcd60e51b815260206004820152603060248201527f4d756c746953656e642073686f756c64206f6e6c792062652063616c6c65642060448201526f1d9a584819195b1959d85d1958d85b1b60821b606482015260840160405180910390fd5b805160205b81811015610151578083015160f81c6001820184015160601c601583018501516035840186015160558501870160008560008114610118576001811461012857610133565b6000808585888a5af19150610133565b6000808585895af491505b508061013e57600080fd5b50508060550185019450505050506100d3565b505050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561017e57600080fd5b813567ffffffffffffffff8082111561019657600080fd5b818401915084601f8301126101aa57600080fd5b8135818111156101bc576101bc610156565b604051601f8201601f19908116603f011681019083821181831017156101e4576101e4610156565b816040528281528760208487010111156101fd57600080fd5b82602086016020830137600092810160200192909252509594505050505056fea2646970667358221220727c5984f77894dc505b550adca5a97d1af1ee47232c1a502ef0c8397608f8f764736f6c634300080a0033",
  "deployedBytecode": "0x60806040526004361061001e5760003560e01c80638d80ff0a14610023575b600080fd5b61003661003136600461016c565b610038565b005b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156100ce5760405162461bcd60e51b815260206004820152603060248201527f4d756c746953656e642073686f756c64206f6e6c792062652063616c6c65642060448201526f1d9a584819195b1959d85d1958d85b1b60821b606482015260840160405180910390fd5b805160205b81811015610151578083015160f81c6001820184015160601c601583018501516035840186015160558501870160008560008114610118576001811461012857610133565b6000808585888a5af19150610133565b6000808585895af491505b508061013e57600080fd5b50508060550185019450505050506100d3565b505050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561017e57600080fd5b813567ffffffffffffffff8082111561019657600080fd5b818401915084601f8301126101aa57600080fd5b8135818111156101bc576101bc610156565b604051601f8201601f19908116603f011681019083821181831017156101e4576101e4610156565b816040528281528760208487010111156101fd57600080fd5b82602086016020830137600092810160200192909252509594505050505056fea2646970667358221220727c5984f77894dc505b550adca5a97d1af1ee47232c1a502ef0c8397608f8f764736f6c634300080a0033",
  "linkReferences": {},
  "deployedLinkReferences": {},
  "devdoc": {
    "author": "Nick Dodson - <nick.dodson@consensys.net>Gonçalo Sá - <goncalo.sa@consensys.net>Stefan George - <stefan@gnosis.io>Richard Meissner - <richard@gnosis.io>",
    "kind": "dev",
    "methods": {
      "multiSend(bytes)": {
        "details": "Sends multiple transactions and reverts all if one fails.",
        "params": {
          "transactions": "Encoded transactions. Each transaction is encoded as a packed bytes of                     operation as a uint8 with 0 for a call or 1 for a delegatecall (=> 1 byte),                     to as a address (=> 20 bytes),                     value as a uint256 (=> 32 bytes),                     data length as a uint256 (=> 32 bytes),                     data as bytes.                     see abi.encodePacked for more information on packed encoding"
        }
      }
    },
    "title": "Multi Send - Allows to batch multiple transactions into one.",
    "version": 1
  },
  "evm": {
    "bytecode": {
      "functionDebugData": {
        "@_2857": {
          "entryPoint": null,
          "id": 2857,
          "parameterSlots": 0,
          "returnSlots": 0
        }
      },
      "generatedSources": [],
      "linkReferences": {},
      "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADDRESS PUSH1 0x80 MSTORE PUSH1 0x80 MLOAD PUSH2 0x253 PUSH2 0x2F PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH1 0x43 ADD MSTORE PUSH2 0x253 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D80FF0A EQ PUSH2 0x23 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x36 PUSH2 0x31 CALLDATASIZE PUSH1 0x4 PUSH2 0x16C JUMP JUMPDEST PUSH2 0x38 JUMP JUMPDEST STOP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0xCE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D756C746953656E642073686F756C64206F6E6C792062652063616C6C656420 PUSH1 0x44 DUP3 ADD MSTORE PUSH16 0x1D9A584819195B1959D85D1958D85B1B PUSH1 0x82 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x20 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x151 JUMPI DUP1 DUP4 ADD MLOAD PUSH1 0xF8 SHR PUSH1 0x1 DUP3 ADD DUP5 ADD MLOAD PUSH1 0x60 SHR PUSH1 0x15 DUP4 ADD DUP6 ADD MLOAD PUSH1 0x35 DUP5 ADD DUP7 ADD MLOAD PUSH1 0x55 DUP6 ADD DUP8 ADD PUSH1 0x0 DUP6 PUSH1 0x0 DUP2 EQ PUSH2 0x118 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x128 JUMPI PUSH2 0x133 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 DUP9 DUP11 GAS CALL SWAP2 POP PUSH2 0x133 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 DUP10 GAS DELEGATECALL SWAP2 POP JUMPDEST POP DUP1 PUSH2 0x13E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 PUSH1 0x55 ADD DUP6 ADD SWAP5 POP POP POP POP POP PUSH2 0xD3 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x196 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1BC JUMPI PUSH2 0x1BC PUSH2 0x156 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1E4 JUMPI PUSH2 0x1E4 PUSH2 0x156 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH19 0x7C5984F77894DC505B550ADCA5A97D1AF1EE47 0x23 0x2C BYTE POP 0x2E CREATE 0xC8 CODECOPY PUSH23 0x8F8F764736F6C634300080A0033000000000000000000 ",
      "sourceMap": "353:3128:23:-:0;;;429:65;;;;;;;;;-1:-1:-1;482:4:23;453:34;;353:3128;;;;;;;;;;;;"
    },
    "deployedBytecode": {
      "functionDebugData": {
        "@multiSend_2875": {
          "entryPoint": 56,
          "id": 2875,
          "parameterSlots": 1,
          "returnSlots": 0
        },
        "abi_decode_tuple_t_bytes_memory_ptr": {
          "entryPoint": 364,
          "id": null,
          "parameterSlots": 2,
          "returnSlots": 1
        },
        "abi_encode_tuple_t_stringliteral_be54b8c9bc01d366a87d58d4e594f7b0f8a1032210aae73d17a5ed4f177986bc__to_t_string_memory_ptr__fromStack_reversed": {
          "entryPoint": null,
          "id": null,
          "parameterSlots": 1,
          "returnSlots": 1
        },
        "panic_error_0x41": {
          "entryPoint": 342,
          "id": null,
          "parameterSlots": 0,
          "returnSlots": 0
        }
      },
      "generatedSources": [
        {
          "ast": {
            "nodeType": "YulBlock",
            "src": "0:1486:86",
            "statements": [
              {
                "nodeType": "YulBlock",
                "src": "6:3:86",
                "statements": []
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "46:95:86",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "63:1:86",
                            "type": "",
                            "value": "0"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "70:3:86",
                                "type": "",
                                "value": "224"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "75:10:86",
                                "type": "",
                                "value": "0x4e487b71"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "66:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "66:20:86"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "56:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "56:31:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "56:31:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "103:1:86",
                            "type": "",
                            "value": "4"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "106:4:86",
                            "type": "",
                            "value": "0x41"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "96:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "96:15:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "96:15:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "127:1:86",
                            "type": "",
                            "value": "0"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "130:4:86",
                            "type": "",
                            "value": "0x24"
                          }
                        ],
                        "functionName": {
                          "name": "revert",
                          "nodeType": "YulIdentifier",
                          "src": "120:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "120:15:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "120:15:86"
                    }
                  ]
                },
                "name": "panic_error_0x41",
                "nodeType": "YulFunctionDefinition",
                "src": "14:127:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "225:842:86",
                  "statements": [
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "271:16:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "280:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "283:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "273:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "273:12:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "273:12:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "dataEnd",
                                "nodeType": "YulIdentifier",
                                "src": "246:7:86"
                              },
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "255:9:86"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "242:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "242:23:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "267:2:86",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "238:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "238:32:86"
                      },
                      "nodeType": "YulIf",
                      "src": "235:52:86"
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "296:37:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "323:9:86"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "310:12:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "310:23:86"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "300:6:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "342:28:86",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "352:18:86",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      },
                      "variables": [
                        {
                          "name": "_1",
                          "nodeType": "YulTypedName",
                          "src": "346:2:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "397:16:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "406:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "409:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "399:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "399:12:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "399:12:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "385:6:86"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "393:2:86"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "382:2:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "382:14:86"
                      },
                      "nodeType": "YulIf",
                      "src": "379:34:86"
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "422:32:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "436:9:86"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "447:6:86"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "432:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "432:22:86"
                      },
                      "variables": [
                        {
                          "name": "_2",
                          "nodeType": "YulTypedName",
                          "src": "426:2:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "502:16:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "511:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "514:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "504:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "504:12:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "504:12:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "481:2:86"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "485:4:86",
                                    "type": "",
                                    "value": "0x1f"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "477:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "477:13:86"
                              },
                              {
                                "name": "dataEnd",
                                "nodeType": "YulIdentifier",
                                "src": "492:7:86"
                              }
                            ],
                            "functionName": {
                              "name": "slt",
                              "nodeType": "YulIdentifier",
                              "src": "473:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "473:27:86"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "466:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "466:35:86"
                      },
                      "nodeType": "YulIf",
                      "src": "463:55:86"
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "527:26:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "550:2:86"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "537:12:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "537:16:86"
                      },
                      "variables": [
                        {
                          "name": "_3",
                          "nodeType": "YulTypedName",
                          "src": "531:2:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "576:22:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [],
                              "functionName": {
                                "name": "panic_error_0x41",
                                "nodeType": "YulIdentifier",
                                "src": "578:16:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "578:18:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "578:18:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "name": "_3",
                            "nodeType": "YulIdentifier",
                            "src": "568:2:86"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "572:2:86"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "565:2:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "565:10:86"
                      },
                      "nodeType": "YulIf",
                      "src": "562:36:86"
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "607:17:86",
                      "value": {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "621:2:86",
                            "type": "",
                            "value": "31"
                          }
                        ],
                        "functionName": {
                          "name": "not",
                          "nodeType": "YulIdentifier",
                          "src": "617:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "617:7:86"
                      },
                      "variables": [
                        {
                          "name": "_4",
                          "nodeType": "YulTypedName",
                          "src": "611:2:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "633:23:86",
                      "value": {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "653:2:86",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "mload",
                          "nodeType": "YulIdentifier",
                          "src": "647:5:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "647:9:86"
                      },
                      "variables": [
                        {
                          "name": "memPtr",
                          "nodeType": "YulTypedName",
                          "src": "637:6:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "665:71:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "687:6:86"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "711:2:86"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "715:4:86",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "707:3:86"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "707:13:86"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "722:2:86"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "703:3:86"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "703:22:86"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "727:2:86",
                                    "type": "",
                                    "value": "63"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "699:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "699:31:86"
                              },
                              {
                                "name": "_4",
                                "nodeType": "YulIdentifier",
                                "src": "732:2:86"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "695:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "695:40:86"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "683:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "683:53:86"
                      },
                      "variables": [
                        {
                          "name": "newFreePtr",
                          "nodeType": "YulTypedName",
                          "src": "669:10:86",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "795:22:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [],
                              "functionName": {
                                "name": "panic_error_0x41",
                                "nodeType": "YulIdentifier",
                                "src": "797:16:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "797:18:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "797:18:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "newFreePtr",
                                "nodeType": "YulIdentifier",
                                "src": "754:10:86"
                              },
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "766:2:86"
                              }
                            ],
                            "functionName": {
                              "name": "gt",
                              "nodeType": "YulIdentifier",
                              "src": "751:2:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "751:18:86"
                          },
                          {
                            "arguments": [
                              {
                                "name": "newFreePtr",
                                "nodeType": "YulIdentifier",
                                "src": "774:10:86"
                              },
                              {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "786:6:86"
                              }
                            ],
                            "functionName": {
                              "name": "lt",
                              "nodeType": "YulIdentifier",
                              "src": "771:2:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "771:22:86"
                          }
                        ],
                        "functionName": {
                          "name": "or",
                          "nodeType": "YulIdentifier",
                          "src": "748:2:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "748:46:86"
                      },
                      "nodeType": "YulIf",
                      "src": "745:72:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "833:2:86",
                            "type": "",
                            "value": "64"
                          },
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "837:10:86"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "826:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "826:22:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "826:22:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "864:6:86"
                          },
                          {
                            "name": "_3",
                            "nodeType": "YulIdentifier",
                            "src": "872:2:86"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "857:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "857:18:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "857:18:86"
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "921:16:86",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "930:1:86",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "933:1:86",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "923:6:86"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "923:12:86"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "923:12:86"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "898:2:86"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "902:2:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "894:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "894:11:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "907:2:86",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "890:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "890:20:86"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "912:7:86"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "887:2:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "887:33:86"
                      },
                      "nodeType": "YulIf",
                      "src": "884:53:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "963:6:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "971:2:86",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "959:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "959:15:86"
                          },
                          {
                            "arguments": [
                              {
                                "name": "_2",
                                "nodeType": "YulIdentifier",
                                "src": "980:2:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "984:2:86",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "976:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "976:11:86"
                          },
                          {
                            "name": "_3",
                            "nodeType": "YulIdentifier",
                            "src": "989:2:86"
                          }
                        ],
                        "functionName": {
                          "name": "calldatacopy",
                          "nodeType": "YulIdentifier",
                          "src": "946:12:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "946:46:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "946:46:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1016:6:86"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1024:2:86"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1012:3:86"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1012:15:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1029:2:86",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1008:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1008:24:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1034:1:86",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "1001:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1001:35:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "1001:35:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "1045:16:86",
                      "value": {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "1055:6:86"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "1045:6:86"
                        }
                      ]
                    }
                  ]
                },
                "name": "abi_decode_tuple_t_bytes_memory_ptr",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "191:9:86",
                    "type": ""
                  },
                  {
                    "name": "dataEnd",
                    "nodeType": "YulTypedName",
                    "src": "202:7:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "value0",
                    "nodeType": "YulTypedName",
                    "src": "214:6:86",
                    "type": ""
                  }
                ],
                "src": "146:921:86"
              },
              {
                "body": {
                  "nodeType": "YulBlock",
                  "src": "1246:238:86",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1263:9:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1274:2:86",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "1256:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1256:21:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "1256:21:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "1297:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1308:2:86",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1293:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1293:18:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1313:2:86",
                            "type": "",
                            "value": "48"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "1286:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1286:30:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "1286:30:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "1336:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1347:2:86",
                                "type": "",
                                "value": "64"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1332:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1332:18:86"
                          },
                          {
                            "hexValue": "4d756c746953656e642073686f756c64206f6e6c792062652063616c6c656420",
                            "kind": "string",
                            "nodeType": "YulLiteral",
                            "src": "1352:34:86",
                            "type": "",
                            "value": "MultiSend should only be called "
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "1325:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1325:62:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "1325:62:86"
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "1407:9:86"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1418:2:86",
                                "type": "",
                                "value": "96"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1403:3:86"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1403:18:86"
                          },
                          {
                            "hexValue": "7669612064656c656761746563616c6c",
                            "kind": "string",
                            "nodeType": "YulLiteral",
                            "src": "1423:18:86",
                            "type": "",
                            "value": "via delegatecall"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "1396:6:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1396:46:86"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "1396:46:86"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "1451:27:86",
                      "value": {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1463:9:86"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1474:3:86",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1459:3:86"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1459:19:86"
                      },
                      "variableNames": [
                        {
                          "name": "tail",
                          "nodeType": "YulIdentifier",
                          "src": "1451:4:86"
                        }
                      ]
                    }
                  ]
                },
                "name": "abi_encode_tuple_t_stringliteral_be54b8c9bc01d366a87d58d4e594f7b0f8a1032210aae73d17a5ed4f177986bc__to_t_string_memory_ptr__fromStack_reversed",
                "nodeType": "YulFunctionDefinition",
                "parameters": [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "1223:9:86",
                    "type": ""
                  }
                ],
                "returnVariables": [
                  {
                    "name": "tail",
                    "nodeType": "YulTypedName",
                    "src": "1237:4:86",
                    "type": ""
                  }
                ],
                "src": "1072:412:86"
              }
            ]
          },
          "contents": "{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_bytes_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n        mstore(add(add(memPtr, _3), 32), 0)\n        value0 := memPtr\n    }\n    function abi_encode_tuple_t_stringliteral_be54b8c9bc01d366a87d58d4e594f7b0f8a1032210aae73d17a5ed4f177986bc__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 48)\n        mstore(add(headStart, 64), \"MultiSend should only be called \")\n        mstore(add(headStart, 96), \"via delegatecall\")\n        tail := add(headStart, 128)\n    }\n}",
          "id": 86,
          "language": "Yul",
          "name": "#utility.yul"
        }
      ],
      "immutableReferences": {
        "2846": [
          {
            "length": 32,
            "start": 67
          }
        ]
      },
      "linkReferences": {},
      "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D80FF0A EQ PUSH2 0x23 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x36 PUSH2 0x31 CALLDATASIZE PUSH1 0x4 PUSH2 0x16C JUMP JUMPDEST PUSH2 0x38 JUMP JUMPDEST STOP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0xCE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D756C746953656E642073686F756C64206F6E6C792062652063616C6C656420 PUSH1 0x44 DUP3 ADD MSTORE PUSH16 0x1D9A584819195B1959D85D1958D85B1B PUSH1 0x82 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x20 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x151 JUMPI DUP1 DUP4 ADD MLOAD PUSH1 0xF8 SHR PUSH1 0x1 DUP3 ADD DUP5 ADD MLOAD PUSH1 0x60 SHR PUSH1 0x15 DUP4 ADD DUP6 ADD MLOAD PUSH1 0x35 DUP5 ADD DUP7 ADD MLOAD PUSH1 0x55 DUP6 ADD DUP8 ADD PUSH1 0x0 DUP6 PUSH1 0x0 DUP2 EQ PUSH2 0x118 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x128 JUMPI PUSH2 0x133 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 DUP9 DUP11 GAS CALL SWAP2 POP PUSH2 0x133 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 DUP10 GAS DELEGATECALL SWAP2 POP JUMPDEST POP DUP1 PUSH2 0x13E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 PUSH1 0x55 ADD DUP6 ADD SWAP5 POP POP POP POP POP PUSH2 0xD3 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x196 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1BC JUMPI PUSH2 0x1BC PUSH2 0x156 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1E4 JUMPI PUSH2 0x1E4 PUSH2 0x156 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH19 0x7C5984F77894DC505B550ADCA5A97D1AF1EE47 0x23 0x2C BYTE POP 0x2E CREATE 0xC8 CODECOPY PUSH23 0x8F8F764736F6C634300080A0033000000000000000000 ",
      "sourceMap": "353:3128:23:-:0;;;;;;;;;;;;;;;;;;;;;1295:2184;;;;;;:::i;:::-;;:::i;:::-;;;1382:4;-1:-1:-1;;;;;1391:18:23;1374:35;;;1366:96;;;;-1:-1:-1;;;1366:96:23;;1274:2:86;1366:96:23;;;1256:21:86;1313:2;1293:18;;;1286:30;1352:34;1332:18;;;1325:62;-1:-1:-1;;;1403:18:86;;;1396:46;1459:19;;1366:96:23;;;;;;;;1571:12;1565:19;1606:4;1623:1840;1706:6;1703:1;1700:13;1623:1840;;;2097:1;2083:12;2079:20;2073:27;2067:4;2063:38;2371:4;2368:1;2364:12;2350;2346:31;2340:38;2334:4;2330:49;2533:4;2530:1;2526:12;2512;2508:31;2502:38;2716:4;2713:1;2709:12;2695;2691:31;2685:38;2910:4;2907:1;2903:12;2889;2885:31;2948:1;2973:9;3008:1;3003:112;;;;3141:1;3136:113;;;;2966:283;;3003:112;3091:1;3088;3076:10;3070:4;3063:5;3059:2;3052:5;3047:46;3036:57;;3003:112;;3136:113;3225:1;3222;3210:10;3204:4;3200:2;3193:5;3180:47;3169:58;;2966:283;-1:-1:-1;3269:14:23;3266:70;;3316:1;3313;3306:12;3266:70;;;3437:10;3431:4;3427:21;3424:1;3420:29;3415:34;;;;;;1623:1840;;;1627:72;;1295:2184;:::o;14:127:86:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:921;214:6;267:2;255:9;246:7;242:23;238:32;235:52;;;283:1;280;273:12;235:52;323:9;310:23;352:18;393:2;385:6;382:14;379:34;;;409:1;406;399:12;379:34;447:6;436:9;432:22;422:32;;492:7;485:4;481:2;477:13;473:27;463:55;;514:1;511;504:12;463:55;550:2;537:16;572:2;568;565:10;562:36;;;578:18;;:::i;:::-;653:2;647:9;621:2;707:13;;-1:-1:-1;;703:22:86;;;727:2;699:31;695:40;683:53;;;751:18;;;771:22;;;748:46;745:72;;;797:18;;:::i;:::-;837:10;833:2;826:22;872:2;864:6;857:18;912:7;907:2;902;898;894:11;890:20;887:33;884:53;;;933:1;930;923:12;884:53;989:2;984;980;976:11;971:2;963:6;959:15;946:46;1034:1;1012:15;;;1029:2;1008:24;1001:35;;;;-1:-1:-1;1016:6:86;146:921;-1:-1:-1;;;;;146:921:86:o"
    },
    "gasEstimates": {
      "creation": {
        "codeDepositCost": "119000",
        "executionCost": "infinite",
        "totalCost": "infinite"
      },
      "external": {
        "multiSend(bytes)": "infinite"
      }
    },
    "methodIdentifiers": {
      "multiSend(bytes)": "8d80ff0a"
    }
  },
  "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"}],\"name\":\"multiSend\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Nick Dodson - <nick.dodson@consensys.net>Gon\\u00e7alo S\\u00e1 - <goncalo.sa@consensys.net>Stefan George - <stefan@gnosis.io>Richard Meissner - <richard@gnosis.io>\",\"kind\":\"dev\",\"methods\":{\"multiSend(bytes)\":{\"details\":\"Sends multiple transactions and reverts all if one fails.\",\"params\":{\"transactions\":\"Encoded transactions. Each transaction is encoded as a packed bytes of                     operation as a uint8 with 0 for a call or 1 for a delegatecall (=> 1 byte),                     to as a address (=> 20 bytes),                     value as a uint256 (=> 32 bytes),                     data length as a uint256 (=> 32 bytes),                     data as bytes.                     see abi.encodePacked for more information on packed encoding\"}}},\"title\":\"Multi Send - Allows to batch multiple transactions into one.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"multiSend(bytes)\":{\"notice\":\"This method is payable as delegatecalls keep the msg.value from the previous call         If the calling method (e.g. execTransaction) received ETH this would revert otherwise\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@gnosis.pm/safe-contracts/contracts/libraries/MultiSend.sol\":\"MultiSend\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@gnosis.pm/safe-contracts/contracts/libraries/MultiSend.sol\":{\"content\":\"// SPDX-License-Identifier: LGPL-3.0-only\\npragma solidity >=0.7.0 <0.9.0;\\n\\n/// @title Multi Send - Allows to batch multiple transactions into one.\\n/// @author Nick Dodson - <nick.dodson@consensys.net>\\n/// @author Gon\\u00e7alo S\\u00e1 - <goncalo.sa@consensys.net>\\n/// @author Stefan George - <stefan@gnosis.io>\\n/// @author Richard Meissner - <richard@gnosis.io>\\ncontract MultiSend {\\n    address private immutable multisendSingleton;\\n\\n    constructor() {\\n        multisendSingleton = address(this);\\n    }\\n\\n    /// @dev Sends multiple transactions and reverts all if one fails.\\n    /// @param transactions Encoded transactions. Each transaction is encoded as a packed bytes of\\n    ///                     operation as a uint8 with 0 for a call or 1 for a delegatecall (=> 1 byte),\\n    ///                     to as a address (=> 20 bytes),\\n    ///                     value as a uint256 (=> 32 bytes),\\n    ///                     data length as a uint256 (=> 32 bytes),\\n    ///                     data as bytes.\\n    ///                     see abi.encodePacked for more information on packed encoding\\n    /// @notice This method is payable as delegatecalls keep the msg.value from the previous call\\n    ///         If the calling method (e.g. execTransaction) received ETH this would revert otherwise\\n    function multiSend(bytes memory transactions) public payable {\\n        require(address(this) != multisendSingleton, \\\"MultiSend should only be called via delegatecall\\\");\\n        // solhint-disable-next-line no-inline-assembly\\n        assembly {\\n            let length := mload(transactions)\\n            let i := 0x20\\n            for {\\n                // Pre block is not used in \\\"while mode\\\"\\n            } lt(i, length) {\\n                // Post block is not used in \\\"while mode\\\"\\n            } {\\n                // First byte of the data is the operation.\\n                // We shift by 248 bits (256 - 8 [operation byte]) it right since mload will always load 32 bytes (a word).\\n                // This will also zero out unused data.\\n                let operation := shr(0xf8, mload(add(transactions, i)))\\n                // We offset the load address by 1 byte (operation byte)\\n                // We shift it right by 96 bits (256 - 160 [20 address bytes]) to right-align the data and zero out unused data.\\n                let to := shr(0x60, mload(add(transactions, add(i, 0x01))))\\n                // We offset the load address by 21 byte (operation byte + 20 address bytes)\\n                let value := mload(add(transactions, add(i, 0x15)))\\n                // We offset the load address by 53 byte (operation byte + 20 address bytes + 32 value bytes)\\n                let dataLength := mload(add(transactions, add(i, 0x35)))\\n                // We offset the load address by 85 byte (operation byte + 20 address bytes + 32 value bytes + 32 data length bytes)\\n                let data := add(transactions, add(i, 0x55))\\n                let success := 0\\n                switch operation\\n                    case 0 {\\n                        success := call(gas(), to, value, data, dataLength, 0, 0)\\n                    }\\n                    case 1 {\\n                        success := delegatecall(gas(), to, data, dataLength, 0, 0)\\n                    }\\n                if eq(success, 0) {\\n                    revert(0, 0)\\n                }\\n                // Next entry starts at 85 byte + data length\\n                i := add(i, add(0x55, dataLength))\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xe6bf0d0a7cd22246fe93dc7da134359d9d61cd2671e20384ec3c9e7677fadc55\",\"license\":\"LGPL-3.0-only\"}},\"version\":1}",
  "storageLayout": {
    "storage": [],
    "types": null
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "multiSend(bytes)": {
        "notice": "This method is payable as delegatecalls keep the msg.value from the previous call         If the calling method (e.g. execTransaction) received ETH this would revert otherwise"
      }
    },
    "version": 1
  }
}