{
  "contractName": "CallReceiverMock",
  "abi": [
    {
      "anonymous": false,
      "inputs": [],
      "name": "MockFunctionCalled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "a",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "b",
          "type": "uint256"
        }
      ],
      "name": "MockFunctionCalledWithArgs",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "mockFunction",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "a",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "b",
          "type": "uint256"
        }
      ],
      "name": "mockFunctionWithArgs",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "mockFunctionNonPayable",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "mockStaticFunction",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "mockFunctionRevertsNoReason",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "mockFunctionRevertsReason",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "mockFunctionThrows",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "mockFunctionOutOfGas",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "slot",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "value",
          "type": "bytes32"
        }
      ],
      "name": "mockFunctionWritesStorage",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[],\"name\":\"MockFunctionCalled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"b\",\"type\":\"uint256\"}],\"name\":\"MockFunctionCalledWithArgs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"mockFunction\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mockFunctionNonPayable\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mockFunctionOutOfGas\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mockFunctionRevertsNoReason\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mockFunctionRevertsReason\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mockFunctionThrows\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"b\",\"type\":\"uint256\"}],\"name\":\"mockFunctionWithArgs\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"mockFunctionWritesStorage\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mockStaticFunction\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/mocks/CallReceiverMock.sol\":\"CallReceiverMock\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":25},\"remappings\":[]},\"sources\":{\"project:/contracts/mocks/CallReceiverMock.sol\":{\"keccak256\":\"0x8885ef9b67f1f0f18b89dc9c51ed84d7a3ac56c56a64227fcdc2de0467ef64ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6ca49c277c632102e7fb0f48533f3f9e3b737039340ddf37994c5e9c6c20875\",\"dweb:/ipfs/QmYqeGwiAChRHGpZWRRomRHhnG71Q4YHpuGA6wSt5RrvNj\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b50610378806100206000396000f3fe6080604052600436106100765760003560e01c80630c0349681461007b5780630f63e42c146100855780632c81d638146100b05780633bcfaa14146100b85780633e6fec04146100c0578063425397a2146100c8578063a793ab4714610105578063c8fc76961461010d578063fdb273251461013c575b600080fd5b61008361014f565b005b34801561009157600080fd5b5061009a610199565b6040516100a79190610295565b60405180910390f35b610083600080fd5b6100836101e6565b61009a610199565b3480156100d457600080fd5b5061009a6100e33660046102e3565b90556040805180820190915260068152650c1e0c4c8ccd60d21b602082015290565b6100836101f0565b34801561011957600080fd5b506040805180820190915260068152650c1e0c4c8ccd60d21b602082015261009a565b61009a61014a3660046102e3565b610235565b60405162461bcd60e51b815260206004820152601b60248201527a43616c6c52656365697665724d6f636b3a20726576657274696e6760281b604482015260640160405180910390fd5b6040516060907f52c66ed6ec9ca819cba26fe2b2650059270d8981b295af300187a964f54a8c2390600090a1506040805180820190915260068152650c1e0c4c8ccd60d21b602082015290565b6101ee610305565b565b60005b600080546001810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5630181905561022e8161031b565b90506101f3565b60408051838152602081018390526060917f2b42b3c9af4187c86225f201736204c7597312c830cb5c2537dff6ef24b946ae910160405180910390a1506040805180820190915260068152650c1e0c4c8ccd60d21b602082015292915050565b600060208083528351808285015260005b818110156102c2578581018301518582016040015282016102a6565b506000604082860101526040601f19601f8301168501019250505092915050565b600080604083850312156102f657600080fd5b50508035926020909101359150565b634e487b7160e01b600052600160045260246000fd5b60006001820161033b57634e487b7160e01b600052601160045260246000fd5b506001019056fea26469706673582212206fbbf49b06ba0c199d30e6191b1363d16155a2bd4378f2a882f8dc3f7b87499564736f6c63430008130033",
  "deployedBytecode": "0x6080604052600436106100765760003560e01c80630c0349681461007b5780630f63e42c146100855780632c81d638146100b05780633bcfaa14146100b85780633e6fec04146100c0578063425397a2146100c8578063a793ab4714610105578063c8fc76961461010d578063fdb273251461013c575b600080fd5b61008361014f565b005b34801561009157600080fd5b5061009a610199565b6040516100a79190610295565b60405180910390f35b610083600080fd5b6100836101e6565b61009a610199565b3480156100d457600080fd5b5061009a6100e33660046102e3565b90556040805180820190915260068152650c1e0c4c8ccd60d21b602082015290565b6100836101f0565b34801561011957600080fd5b506040805180820190915260068152650c1e0c4c8ccd60d21b602082015261009a565b61009a61014a3660046102e3565b610235565b60405162461bcd60e51b815260206004820152601b60248201527a43616c6c52656365697665724d6f636b3a20726576657274696e6760281b604482015260640160405180910390fd5b6040516060907f52c66ed6ec9ca819cba26fe2b2650059270d8981b295af300187a964f54a8c2390600090a1506040805180820190915260068152650c1e0c4c8ccd60d21b602082015290565b6101ee610305565b565b60005b600080546001810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5630181905561022e8161031b565b90506101f3565b60408051838152602081018390526060917f2b42b3c9af4187c86225f201736204c7597312c830cb5c2537dff6ef24b946ae910160405180910390a1506040805180820190915260068152650c1e0c4c8ccd60d21b602082015292915050565b600060208083528351808285015260005b818110156102c2578581018301518582016040015282016102a6565b506000604082860101526040601f19601f8301168501019250505092915050565b600080604083850312156102f657600080fd5b50508035926020909101359150565b634e487b7160e01b600052600160045260246000fd5b60006001820161033b57634e487b7160e01b600052601160045260246000fd5b506001019056fea26469706673582212206fbbf49b06ba0c199d30e6191b1363d16155a2bd4378f2a882f8dc3f7b87499564736f6c63430008130033",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:2048:81",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:81",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "135:427:81",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "145:12:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "155:2:81",
                    "type": "",
                    "value": "32"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "149:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "173:9:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "184:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "166:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "166:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "166:21:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "196:27:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "216:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "210:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "210:13:81"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "200:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "243:9:81"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "254:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "239:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "239:18:81"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "259:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "232:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "232:34:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "232:34:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "275:10:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "284:1:81",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "279:1:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "344:90:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "headStart",
                                      "nodeType": "YulIdentifier",
                                      "src": "373:9:81"
                                    },
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "384:1:81"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "369:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "369:17:81"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "388:2:81",
                                  "type": "",
                                  "value": "64"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "365:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "365:26:81"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "407:6:81"
                                        },
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "415:1:81"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "403:3:81"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "403:14:81"
                                    },
                                    {
                                      "name": "_1",
                                      "nodeType": "YulIdentifier",
                                      "src": "419:2:81"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "399:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "399:23:81"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "393:5:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "393:30:81"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "358:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "358:66:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "358:66:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "305:1:81"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "308:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "302:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "302:13:81"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "316:19:81",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "318:15:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "327:1:81"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "330:2:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "323:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "323:10:81"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "318:1:81"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "298:3:81",
                    "statements": []
                  },
                  "src": "294:140:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "458:9:81"
                              },
                              {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "469:6:81"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "454:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "454:22:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "478:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "450:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "450:31:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "483:1:81",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "443:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "443:42:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "443:42:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "494:62:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "510:9:81"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "529:6:81"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "537:2:81",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "525:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "525:15:81"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "546:2:81",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "542:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "542:7:81"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "521:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "521:29:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "506:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "506:45:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "553:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "502:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "502:54:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "494:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "104:9:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "115:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "126:4:81",
                "type": ""
              }
            ],
            "src": "14:548:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "654:161:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "700:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "709:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "712:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "702:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "702:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "702:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "675:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "684:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "671:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "671:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "696:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "667:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "667:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "664:52:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "725:33:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "748:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "735:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "735:23:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "725:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "767:42:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "794:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "805:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "790:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "790:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "777:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "777:32:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "767:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes32t_bytes32",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "612:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "623:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "635:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "643:6:81",
                "type": ""
              }
            ],
            "src": "567:248:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "907:161:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "953:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "962:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "965:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "955:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "955:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "955:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "928:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "937:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "924:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "924:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "949:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "920:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "920:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "917:52:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "978:33:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1001:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "988:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "988:23:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "978:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1020:42:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1047:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1058:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1043:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1043:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1030:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1030:32:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "1020:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "865:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "876:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "888:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "896:6:81",
                "type": ""
              }
            ],
            "src": "820:248:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1247:177:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1264:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1275:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1257:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1257:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1257:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1298:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1309:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1294:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1294:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1314:2:81",
                        "type": "",
                        "value": "27"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1287:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1287:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1287:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1337:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1348:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1333:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1333:18:81"
                      },
                      {
                        "hexValue": "43616c6c52656365697665724d6f636b3a20726576657274696e67",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "1353:29:81",
                        "type": "",
                        "value": "CallReceiverMock: reverting"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1326:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1326:57:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1326:57:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1392:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1404:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1415:2:81",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1400:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1400:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "1392:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_1fa67ffa712c128062681134b4f6fcc189b02b2cec4822b38d0f01b87c9ef80f__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1224:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "1238:4:81",
                "type": ""
              }
            ],
            "src": "1073:351:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1461:95:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1478:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1485:3:81",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1490:10:81",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "1481:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1481:20:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1471:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1471:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1471:31:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1518:1:81",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1521:4:81",
                        "type": "",
                        "value": "0x01"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1511:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1511:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1511:15:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1542:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1545:4:81",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "1535:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1535:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1535:15:81"
                }
              ]
            },
            "name": "panic_error_0x01",
            "nodeType": "YulFunctionDefinition",
            "src": "1429:127:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1608:185:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1647:111:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1668:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "1675:3:81",
                                  "type": "",
                                  "value": "224"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "1680:10:81",
                                  "type": "",
                                  "value": "0x4e487b71"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "1671:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1671:20:81"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "1661:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1661:31:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1661:31:81"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1712:1:81",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1715:4:81",
                              "type": "",
                              "value": "0x11"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "1705:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1705:15:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1705:15:81"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1740:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1743:4:81",
                              "type": "",
                              "value": "0x24"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1733:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1733:15:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1733:15:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "1624:5:81"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1635:1:81",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "not",
                          "nodeType": "YulIdentifier",
                          "src": "1631:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1631:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nodeType": "YulIdentifier",
                      "src": "1621:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1621:17:81"
                  },
                  "nodeType": "YulIf",
                  "src": "1618:140:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1767:20:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "1778:5:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1785:1:81",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1774:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1774:13:81"
                  },
                  "variableNames": [
                    {
                      "name": "ret",
                      "nodeType": "YulIdentifier",
                      "src": "1767:3:81"
                    }
                  ]
                }
              ]
            },
            "name": "increment_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "1590:5:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "ret",
                "nodeType": "YulTypedName",
                "src": "1600:3:81",
                "type": ""
              }
            ],
            "src": "1561:232:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1927:119:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "1937:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1949:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1960:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1945:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1945:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "1937:4:81"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1979:9:81"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "1990:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1972:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1972:25:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1972:25:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2017:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2028:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2013:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2013:18:81"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "2033:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2006:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2006:34:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2006:34:81"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1888:9:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "1899:6:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1907:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "1918:4:81",
                "type": ""
              }
            ],
            "src": "1798:248:81"
          }
        ]
      },
      "contents": "{\n    { }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        mstore(headStart, _1)\n        let length := mload(value0)\n        mstore(add(headStart, _1), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n        }\n        mstore(add(add(headStart, length), 64), 0)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n    function abi_decode_tuple_t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_stringliteral_1fa67ffa712c128062681134b4f6fcc189b02b2cec4822b38d0f01b87c9ef80f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 27)\n        mstore(add(headStart, 64), \"CallReceiverMock: reverting\")\n        tail := add(headStart, 96)\n    }\n    function panic_error_0x01()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x01)\n        revert(0, 0x24)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        ret := add(value, 1)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n}",
      "id": 81,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "58:1316:56:-:0;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "58:1316:56:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:106;;;:::i;:::-;;528:133;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;771:79;;58:1316;;;968:75;;;:::i;214:131::-;;;:::i;1184:188::-;;;;;;;;;;-1:-1:-1;1184:188:56;;;;;:::i;:::-;1312:19;;1350:15;;;;;;;;;;;;-1:-1:-1;;;1350:15:56;;;;;1184:188;1049:129;;;:::i;667:98::-;;;;;;;;;;-1:-1:-1;743:15:56;;;;;;;;;;;;-1:-1:-1;;;743:15:56;;;;667:98;;351:171;;;;;;:::i;:::-;;:::i;856:106::-;918:37;;-1:-1:-1;;;918:37:56;;1275:2:81;918:37:56;;;1257:21:81;1314:2;1294:18;;;1287:30;-1:-1:-1;;;1333:18:81;;;1326:57;1400:18;;918:37:56;;;;;;;528:133;608:20;;578:13;;608:20;;;;;-1:-1:-1;639:15:56;;;;;;;;;;;;-1:-1:-1;;;639:15:56;;;;;528:133::o;968:75::-;1023:13;;:::i;:::-;968:75::o;1049:129::-;1111:9;1106:66;1147:6;:14;;;;;;;;;;;;;;;1128:3;1159:1;1128:3;:::i;:::-;;;1106:66;;351:171;457:32;;;1972:25:81;;;2028:2;2013:18;;2006:34;;;427:13:56;;457:32;;1945:18:81;457:32:56;;;;;;;-1:-1:-1;500:15:56;;;;;;;;;;;;-1:-1:-1;;;500:15:56;;;;351:171;;;;:::o;14:548:81:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:248::-;635:6;643;696:2;684:9;675:7;671:23;667:32;664:52;;;712:1;709;702:12;664:52;-1:-1:-1;;735:23:81;;;805:2;790:18;;;777:32;;-1:-1:-1;567:248:81:o;1429:127::-;1490:10;1485:3;1481:20;1478:1;1471:31;1521:4;1518:1;1511:15;1545:4;1542:1;1535:15;1561:232;1600:3;1621:17;;;1618:140;;1680:10;1675:3;1671:20;1668:1;1661:31;1715:4;1712:1;1705:15;1743:4;1740:1;1733:15;1618:140;-1:-1:-1;1785:1:81;1774:13;;1561:232::o",
  "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\ncontract CallReceiverMock {\n    event MockFunctionCalled();\n    event MockFunctionCalledWithArgs(uint256 a, uint256 b);\n\n    uint256[] private _array;\n\n    function mockFunction() public payable returns (string memory) {\n        emit MockFunctionCalled();\n\n        return \"0x1234\";\n    }\n\n    function mockFunctionWithArgs(uint256 a, uint256 b) public payable returns (string memory) {\n        emit MockFunctionCalledWithArgs(a, b);\n\n        return \"0x1234\";\n    }\n\n    function mockFunctionNonPayable() public returns (string memory) {\n        emit MockFunctionCalled();\n\n        return \"0x1234\";\n    }\n\n    function mockStaticFunction() public pure returns (string memory) {\n        return \"0x1234\";\n    }\n\n    function mockFunctionRevertsNoReason() public payable {\n        revert();\n    }\n\n    function mockFunctionRevertsReason() public payable {\n        revert(\"CallReceiverMock: reverting\");\n    }\n\n    function mockFunctionThrows() public payable {\n        assert(false);\n    }\n\n    function mockFunctionOutOfGas() public payable {\n        for (uint256 i = 0; ; ++i) {\n            _array.push(i);\n        }\n    }\n\n    function mockFunctionWritesStorage(bytes32 slot, bytes32 value) public returns (string memory) {\n        assembly {\n            sstore(slot, value)\n        }\n        return \"0x1234\";\n    }\n}\n",
  "sourcePath": "/Users/chung/git/manifoldxyz/solidity/creator-core-solidity/contracts/mocks/CallReceiverMock.sol",
  "ast": {
    "absolutePath": "project:/contracts/mocks/CallReceiverMock.sol",
    "exportedSymbols": {
      "CallReceiverMock": [
        16707
      ]
    },
    "id": 16708,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 16593,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "33:23:56"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "CallReceiverMock",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 16707,
        "linearizedBaseContracts": [
          16707
        ],
        "name": "CallReceiverMock",
        "nameLocation": "67:16:56",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "eventSelector": "52c66ed6ec9ca819cba26fe2b2650059270d8981b295af300187a964f54a8c23",
            "id": 16595,
            "name": "MockFunctionCalled",
            "nameLocation": "96:18:56",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 16594,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "114:2:56"
            },
            "src": "90:27:56"
          },
          {
            "anonymous": false,
            "eventSelector": "2b42b3c9af4187c86225f201736204c7597312c830cb5c2537dff6ef24b946ae",
            "id": 16601,
            "name": "MockFunctionCalledWithArgs",
            "nameLocation": "128:26:56",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 16600,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16597,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "a",
                  "nameLocation": "163:1:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 16601,
                  "src": "155:9:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16596,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "155:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16599,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "b",
                  "nameLocation": "174:1:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 16601,
                  "src": "166:9:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16598,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "166:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "154:22:56"
            },
            "src": "122:55:56"
          },
          {
            "constant": false,
            "id": 16604,
            "mutability": "mutable",
            "name": "_array",
            "nameLocation": "201:6:56",
            "nodeType": "VariableDeclaration",
            "scope": 16707,
            "src": "183:24:56",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
              "typeString": "uint256[]"
            },
            "typeName": {
              "baseType": {
                "id": 16602,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "183:7:56",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "id": 16603,
              "nodeType": "ArrayTypeName",
              "src": "183:9:56",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                "typeString": "uint256[]"
              }
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 16614,
              "nodeType": "Block",
              "src": "277:68:56",
              "statements": [
                {
                  "eventCall": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 16609,
                      "name": "MockFunctionCalled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16595,
                      "src": "292:18:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 16610,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "292:20:56",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16611,
                  "nodeType": "EmitStatement",
                  "src": "287:25:56"
                },
                {
                  "expression": {
                    "hexValue": "307831323334",
                    "id": 16612,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "330:8:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_1ac7d1b81b7ba1025b36ccb86723da6ee5a87259f1c2fd5abe69d3200b512ec8",
                      "typeString": "literal_string \"0x1234\""
                    },
                    "value": "0x1234"
                  },
                  "functionReturnParameters": 16608,
                  "id": 16613,
                  "nodeType": "Return",
                  "src": "323:15:56"
                }
              ]
            },
            "functionSelector": "3e6fec04",
            "id": 16615,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "mockFunction",
            "nameLocation": "223:12:56",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16605,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "235:2:56"
            },
            "returnParameters": {
              "id": 16608,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16607,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 16615,
                  "src": "262:13:56",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16606,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "262:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "261:15:56"
            },
            "scope": 16707,
            "src": "214:131:56",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 16631,
              "nodeType": "Block",
              "src": "442:80:56",
              "statements": [
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 16625,
                        "name": "a",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16617,
                        "src": "484:1:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 16626,
                        "name": "b",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16619,
                        "src": "487:1:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 16624,
                      "name": "MockFunctionCalledWithArgs",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16601,
                      "src": "457:26:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256)"
                      }
                    },
                    "id": 16627,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "457:32:56",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16628,
                  "nodeType": "EmitStatement",
                  "src": "452:37:56"
                },
                {
                  "expression": {
                    "hexValue": "307831323334",
                    "id": 16629,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "507:8:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_1ac7d1b81b7ba1025b36ccb86723da6ee5a87259f1c2fd5abe69d3200b512ec8",
                      "typeString": "literal_string \"0x1234\""
                    },
                    "value": "0x1234"
                  },
                  "functionReturnParameters": 16623,
                  "id": 16630,
                  "nodeType": "Return",
                  "src": "500:15:56"
                }
              ]
            },
            "functionSelector": "fdb27325",
            "id": 16632,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "mockFunctionWithArgs",
            "nameLocation": "360:20:56",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16620,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16617,
                  "mutability": "mutable",
                  "name": "a",
                  "nameLocation": "389:1:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 16632,
                  "src": "381:9:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16616,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "381:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16619,
                  "mutability": "mutable",
                  "name": "b",
                  "nameLocation": "400:1:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 16632,
                  "src": "392:9:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16618,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "392:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "380:22:56"
            },
            "returnParameters": {
              "id": 16623,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16622,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 16632,
                  "src": "427:13:56",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16621,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "427:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "426:15:56"
            },
            "scope": 16707,
            "src": "351:171:56",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 16642,
              "nodeType": "Block",
              "src": "593:68:56",
              "statements": [
                {
                  "eventCall": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 16637,
                      "name": "MockFunctionCalled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16595,
                      "src": "608:18:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 16638,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "608:20:56",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16639,
                  "nodeType": "EmitStatement",
                  "src": "603:25:56"
                },
                {
                  "expression": {
                    "hexValue": "307831323334",
                    "id": 16640,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "646:8:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_1ac7d1b81b7ba1025b36ccb86723da6ee5a87259f1c2fd5abe69d3200b512ec8",
                      "typeString": "literal_string \"0x1234\""
                    },
                    "value": "0x1234"
                  },
                  "functionReturnParameters": 16636,
                  "id": 16641,
                  "nodeType": "Return",
                  "src": "639:15:56"
                }
              ]
            },
            "functionSelector": "0f63e42c",
            "id": 16643,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "mockFunctionNonPayable",
            "nameLocation": "537:22:56",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16633,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "559:2:56"
            },
            "returnParameters": {
              "id": 16636,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16635,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 16643,
                  "src": "578:13:56",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16634,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "578:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "577:15:56"
            },
            "scope": 16707,
            "src": "528:133:56",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 16650,
              "nodeType": "Block",
              "src": "733:32:56",
              "statements": [
                {
                  "expression": {
                    "hexValue": "307831323334",
                    "id": 16648,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "750:8:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_1ac7d1b81b7ba1025b36ccb86723da6ee5a87259f1c2fd5abe69d3200b512ec8",
                      "typeString": "literal_string \"0x1234\""
                    },
                    "value": "0x1234"
                  },
                  "functionReturnParameters": 16647,
                  "id": 16649,
                  "nodeType": "Return",
                  "src": "743:15:56"
                }
              ]
            },
            "functionSelector": "c8fc7696",
            "id": 16651,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "mockStaticFunction",
            "nameLocation": "676:18:56",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16644,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "694:2:56"
            },
            "returnParameters": {
              "id": 16647,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16646,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 16651,
                  "src": "718:13:56",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16645,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "718:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "717:15:56"
            },
            "scope": 16707,
            "src": "667:98:56",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 16657,
              "nodeType": "Block",
              "src": "825:25:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 16654,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967277,
                        4294967277
                      ],
                      "referencedDeclaration": 4294967277,
                      "src": "835:6:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 16655,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "835:8:56",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16656,
                  "nodeType": "ExpressionStatement",
                  "src": "835:8:56"
                }
              ]
            },
            "functionSelector": "2c81d638",
            "id": 16658,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "mockFunctionRevertsNoReason",
            "nameLocation": "780:27:56",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16652,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "807:2:56"
            },
            "returnParameters": {
              "id": 16653,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "825:0:56"
            },
            "scope": 16707,
            "src": "771:79:56",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 16665,
              "nodeType": "Block",
              "src": "908:54:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "43616c6c52656365697665724d6f636b3a20726576657274696e67",
                        "id": 16662,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "925:29:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1fa67ffa712c128062681134b4f6fcc189b02b2cec4822b38d0f01b87c9ef80f",
                          "typeString": "literal_string \"CallReceiverMock: reverting\""
                        },
                        "value": "CallReceiverMock: reverting"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_1fa67ffa712c128062681134b4f6fcc189b02b2cec4822b38d0f01b87c9ef80f",
                          "typeString": "literal_string \"CallReceiverMock: reverting\""
                        }
                      ],
                      "id": 16661,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967277,
                        4294967277
                      ],
                      "referencedDeclaration": 4294967277,
                      "src": "918:6:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 16663,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "918:37:56",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16664,
                  "nodeType": "ExpressionStatement",
                  "src": "918:37:56"
                }
              ]
            },
            "functionSelector": "0c034968",
            "id": 16666,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "mockFunctionRevertsReason",
            "nameLocation": "865:25:56",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16659,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "890:2:56"
            },
            "returnParameters": {
              "id": 16660,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "908:0:56"
            },
            "scope": 16707,
            "src": "856:106:56",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 16673,
              "nodeType": "Block",
              "src": "1013:30:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "66616c7365",
                        "id": 16670,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1030:5:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 16669,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4294967293,
                      "src": "1023:6:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 16671,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1023:13:56",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16672,
                  "nodeType": "ExpressionStatement",
                  "src": "1023:13:56"
                }
              ]
            },
            "functionSelector": "3bcfaa14",
            "id": 16674,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "mockFunctionThrows",
            "nameLocation": "977:18:56",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16667,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "995:2:56"
            },
            "returnParameters": {
              "id": 16668,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1013:0:56"
            },
            "scope": 16707,
            "src": "968:75:56",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 16692,
              "nodeType": "Block",
              "src": "1096:82:56",
              "statements": [
                {
                  "body": {
                    "id": 16690,
                    "nodeType": "Block",
                    "src": "1133:39:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 16687,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16678,
                              "src": "1159:1:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 16684,
                              "name": "_array",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16604,
                              "src": "1147:6:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              }
                            },
                            "id": 16686,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1154:4:56",
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "src": "1147:11:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                              "typeString": "function (uint256[] storage pointer,uint256)"
                            }
                          },
                          "id": 16688,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1147:14:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16689,
                        "nodeType": "ExpressionStatement",
                        "src": "1147:14:56"
                      }
                    ]
                  },
                  "id": 16691,
                  "initializationExpression": {
                    "assignments": [
                      16678
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 16678,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "1119:1:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 16691,
                        "src": "1111:9:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16677,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1111:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 16680,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 16679,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1123:1:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1111:13:56"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 16682,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "1128:3:56",
                      "subExpression": {
                        "id": 16681,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16678,
                        "src": "1130:1:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 16683,
                    "nodeType": "ExpressionStatement",
                    "src": "1128:3:56"
                  },
                  "nodeType": "ForStatement",
                  "src": "1106:66:56"
                }
              ]
            },
            "functionSelector": "a793ab47",
            "id": 16693,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "mockFunctionOutOfGas",
            "nameLocation": "1058:20:56",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16675,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1078:2:56"
            },
            "returnParameters": {
              "id": 16676,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1096:0:56"
            },
            "scope": 16707,
            "src": "1049:129:56",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 16705,
              "nodeType": "Block",
              "src": "1279:93:56",
              "statements": [
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "1298:43:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "slot",
                              "nodeType": "YulIdentifier",
                              "src": "1319:4:56"
                            },
                            {
                              "name": "value",
                              "nodeType": "YulIdentifier",
                              "src": "1325:5:56"
                            }
                          ],
                          "functionName": {
                            "name": "sstore",
                            "nodeType": "YulIdentifier",
                            "src": "1312:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1312:19:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1312:19:56"
                      }
                    ]
                  },
                  "evmVersion": "paris",
                  "externalReferences": [
                    {
                      "declaration": 16695,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "1319:4:56",
                      "valueSize": 1
                    },
                    {
                      "declaration": 16697,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "1325:5:56",
                      "valueSize": 1
                    }
                  ],
                  "id": 16702,
                  "nodeType": "InlineAssembly",
                  "src": "1289:52:56"
                },
                {
                  "expression": {
                    "hexValue": "307831323334",
                    "id": 16703,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1357:8:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_1ac7d1b81b7ba1025b36ccb86723da6ee5a87259f1c2fd5abe69d3200b512ec8",
                      "typeString": "literal_string \"0x1234\""
                    },
                    "value": "0x1234"
                  },
                  "functionReturnParameters": 16701,
                  "id": 16704,
                  "nodeType": "Return",
                  "src": "1350:15:56"
                }
              ]
            },
            "functionSelector": "425397a2",
            "id": 16706,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "mockFunctionWritesStorage",
            "nameLocation": "1193:25:56",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16698,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16695,
                  "mutability": "mutable",
                  "name": "slot",
                  "nameLocation": "1227:4:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 16706,
                  "src": "1219:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16694,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1219:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16697,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "1241:5:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 16706,
                  "src": "1233:13:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16696,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1233:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1218:29:56"
            },
            "returnParameters": {
              "id": 16701,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16700,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 16706,
                  "src": "1264:13:56",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16699,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1264:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1263:15:56"
            },
            "scope": 16707,
            "src": "1184:188:56",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 16708,
        "src": "58:1316:56",
        "usedErrors": []
      }
    ],
    "src": "33:1342:56"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.19+commit.7dd6d404.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.12",
  "updatedAt": "2023-03-22T17:07:39.770Z",
  "devdoc": {
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}