{
  "id": "d0c1fabb1f2dfe8899638ae54725b13b",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.8.0",
  "solcLongVersion": "0.8.0+commit.c7dfd78e",
  "input": {
    "language": "Solidity",
    "sources": {
      "contracts/services/MerkleTreePathValidator.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\";\n\ncontract MerkleTreePathValidator {\n\n    using MerkleProof for bytes32[];\n\n    function containsNode(\n        bytes32 merkleTreeRoot,\n        uint256 treeDepth,\n        address wallet,\n        uint256 balance,\n        bytes32[] memory proof\n    ) external pure returns (bool) {\n        if (proof.length != treeDepth) return false;\n        bytes32 leaf = keccak256(abi.encode(wallet, balance));\n        return proof.verify(merkleTreeRoot, leaf);\n    }\n}\n"
      },
      "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev These functions deal with verification of Merkle Trees proofs.\n *\n * The proofs can be generated using the JavaScript library\n * https://github.com/miguelmota/merkletreejs[merkletreejs].\n * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled.\n *\n * See `test/utils/cryptography/MerkleProof.test.js` for some examples.\n */\nlibrary MerkleProof {\n    /**\n     * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree\n     * defined by `root`. For this, a `proof` must be provided, containing\n     * sibling hashes on the branch from the leaf to the root of the tree. Each\n     * pair of leaves and each pair of pre-images are assumed to be sorted.\n     */\n    function verify(\n        bytes32[] memory proof,\n        bytes32 root,\n        bytes32 leaf\n    ) internal pure returns (bool) {\n        bytes32 computedHash = leaf;\n\n        for (uint256 i = 0; i < proof.length; i++) {\n            bytes32 proofElement = proof[i];\n\n            if (computedHash <= proofElement) {\n                // Hash(current computed hash + current element of the proof)\n                computedHash = keccak256(abi.encodePacked(computedHash, proofElement));\n            } else {\n                // Hash(current element of the proof + current computed hash)\n                computedHash = keccak256(abi.encodePacked(proofElement, computedHash));\n            }\n        }\n\n        // Check if the computed hash (root) is equal to the provided root\n        return computedHash == root;\n    }\n}\n"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers"
          ],
          "": [
            "ast"
          ]
        }
      }
    }
  },
  "output": {
    "contracts": {
      "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol": {
        "MerkleProof": {
          "abi": [],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206a1445d30ce29515a741c8e713e1f73d7e33fe652431d28cfc08b8a3d1726eb064736f6c63430008000033",
              "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH11 0x1445D30CE29515A741C8E7 SGT 0xE1 0xF7 RETURNDATASIZE PUSH31 0x33FE652431D28CFC08B8A3D1726EB064736F6C634300080000330000000000 ",
              "sourceMap": "423:1165:0:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;423:1165:0;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206a1445d30ce29515a741c8e713e1f73d7e33fe652431d28cfc08b8a3d1726eb064736f6c63430008000033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH11 0x1445D30CE29515A741C8E7 SGT 0xE1 0xF7 RETURNDATASIZE PUSH31 0x33FE652431D28CFC08B8A3D1726EB064736F6C634300080000330000000000 ",
              "sourceMap": "423:1165:0:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "contracts/services/MerkleTreePathValidator.sol": {
        "MerkleTreePathValidator": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "merkleTreeRoot",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "treeDepth",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "wallet",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "balance",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes32[]",
                  "name": "proof",
                  "type": "bytes32[]"
                }
              ],
              "name": "containsNode",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50610309806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80639ddc3d7914610030575b600080fd5b61004361003e36600461016d565b610059565b604051610050919061028b565b60405180910390f35b60008482511461006b575060006100a9565b60008484604051602001610080929190610272565b60408051601f19818403018152919052805160209091012090506100a58388836100b2565b9150505b95945050505050565b600081815b85518110156101625760008682815181106100e257634e487b7160e01b600052603260045260246000fd5b60200260200101519050808311610123578281604051602001610106929190610264565b60405160208183030381529060405280519060200120925061014f565b8083604051602001610136929190610264565b6040516020818303038152906040528051906020012092505b508061015a81610296565b9150506100b7565b509092149392505050565b600080600080600060a08688031215610184578081fd5b85359450602080870135945060408701356001600160a01b03811681146101a9578283fd5b935060608701359250608087013567ffffffffffffffff808211156101cc578384fd5b818901915089601f8301126101df578384fd5b8135818111156101f1576101f16102bd565b83810260405185828201018181108582111715610210576102106102bd565b604052828152858101935084860182860187018e101561022e578788fd5b8795505b83861015610250578035855260019590950194938601938601610232565b508096505050505050509295509295909350565b918252602082015260400190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b60006000198214156102b657634e487b7160e01b81526011600452602481fd5b5060010190565b634e487b7160e01b600052604160045260246000fdfea2646970667358221220c8bbddbdb64a745c6a10dea0bff33421c3a6a89d8932f33295ca44b9a4f4e15b64736f6c63430008000033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x309 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9DDC3D79 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0x16D JUMP JUMPDEST PUSH2 0x59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x50 SWAP2 SWAP1 PUSH2 0x28B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP5 DUP3 MLOAD EQ PUSH2 0x6B JUMPI POP PUSH1 0x0 PUSH2 0xA9 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x80 SWAP3 SWAP2 SWAP1 PUSH2 0x272 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SWAP1 POP PUSH2 0xA5 DUP4 DUP9 DUP4 PUSH2 0xB2 JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x162 JUMPI PUSH1 0x0 DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xE2 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 DUP4 GT PUSH2 0x123 JUMPI DUP3 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x106 SWAP3 SWAP2 SWAP1 PUSH2 0x264 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP3 POP PUSH2 0x14F JUMP JUMPDEST DUP1 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x136 SWAP3 SWAP2 SWAP1 PUSH2 0x264 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP3 POP JUMPDEST POP DUP1 PUSH2 0x15A DUP2 PUSH2 0x296 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xB7 JUMP JUMPDEST POP SWAP1 SWAP3 EQ SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x184 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP1 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1A9 JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1CC JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1DF JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1F1 JUMPI PUSH2 0x1F1 PUSH2 0x2BD JUMP JUMPDEST DUP4 DUP2 MUL PUSH1 0x40 MLOAD DUP6 DUP3 DUP3 ADD ADD DUP2 DUP2 LT DUP6 DUP3 GT OR ISZERO PUSH2 0x210 JUMPI PUSH2 0x210 PUSH2 0x2BD JUMP JUMPDEST PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP6 DUP2 ADD SWAP4 POP DUP5 DUP7 ADD DUP3 DUP7 ADD DUP8 ADD DUP15 LT ISZERO PUSH2 0x22E JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP6 POP JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0x250 JUMPI DUP1 CALLDATALOAD DUP6 MSTORE PUSH1 0x1 SWAP6 SWAP1 SWAP6 ADD SWAP5 SWAP4 DUP7 ADD SWAP4 DUP7 ADD PUSH2 0x232 JUMP JUMPDEST POP DUP1 SWAP7 POP POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x2B6 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 DUP2 REVERT JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC8 0xBB 0xDD 0xBD 0xB6 0x4A PUSH21 0x5C6A10DEA0BFF33421C3A6A89D8932F33295CA44B9 LOG4 DELEGATECALL 0xE1 JUMPDEST PUSH5 0x736F6C6343 STOP ADDMOD STOP STOP CALLER ",
              "sourceMap": "127:451:1:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:2660:2",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:2",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "177:1385:2",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "224:26:2",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "233:6:2"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "241:6:2"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "226:6:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "226:22:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "226:22:2"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "198:7:2"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "207:9:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "194:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "194:23:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "219:3:2",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "190:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "190:33:2"
                              },
                              "nodeType": "YulIf",
                              "src": "187:2:2"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "259:33:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "282:9:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "269:12:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "269:23:2"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "259:6:2"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "301:12:2",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "311:2:2",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "305:2:2",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "322:42:2",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "349:9:2"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "360:2:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "345:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "345:18:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "332:12:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "332:32:2"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "322:6:2"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "373:45:2",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "403:9:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "414:2:2",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "399:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "399:18:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "386:12:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "386:32:2"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "377:5:2",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "481:26:2",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "490:6:2"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "498:6:2"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "483:6:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "483:22:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "483:22:2"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "440:5:2"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "451:5:2"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "466:3:2",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "471:1:2",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "462:3:2"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "462:11:2"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "475:1:2",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "458:3:2"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "458:19:2"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "447:3:2"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "447:31:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "437:2:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "437:42:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "430:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "430:50:2"
                              },
                              "nodeType": "YulIf",
                              "src": "427:2:2"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "516:15:2",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "526:5:2"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "516:6:2"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "540:42:2",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "567:9:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "578:2:2",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "563:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "563:18:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "550:12:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "550:32:2"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "540:6:2"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "591:47:2",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "622:9:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "633:3:2",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "618:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "618:19:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "605:12:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "605:33:2"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "595:6:2",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "647:28:2",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "657:18:2",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "651:2:2",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "702:26:2",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "711:6:2"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "719:6:2"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "704:6:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "704:22:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "704:22:2"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "690:6:2"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "698:2:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "687:2:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "687:14:2"
                              },
                              "nodeType": "YulIf",
                              "src": "684:2:2"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "737:32:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "751:9:2"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "762:6:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "747:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "747:22:2"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "741:2:2",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "817:26:2",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "826:6:2"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "834:6:2"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "819:6:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "819:22:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "819:22:2"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "796:2:2"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "800:4:2",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "792:3:2"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "792:13:2"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "807:7:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "788:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "788:27:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "781:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "781:35:2"
                              },
                              "nodeType": "YulIf",
                              "src": "778:2:2"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "852:26:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "875:2:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "862:12:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "862:16:2"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "856:2:2",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "901:22:2",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "903:16:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "903:18:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "903:18:2"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "893:2:2"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "897:2:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "890:2:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "890:10:2"
                              },
                              "nodeType": "YulIf",
                              "src": "887:2:2"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "932:21:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "946:2:2"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "950:2:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "942:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "942:11:2"
                              },
                              "variables": [
                                {
                                  "name": "_5",
                                  "nodeType": "YulTypedName",
                                  "src": "936:2:2",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "962:23:2",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "982:2:2",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "976:5:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "976:9:2"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "966:6:2",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "994:42:2",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1020:6:2"
                                      },
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "1028:2:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1016:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1016:15:2"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1033:2:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1012:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1012:24:2"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "998:10:2",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1095:22:2",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1097:16:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1097:18:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1097:18:2"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1054:10:2"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "1066:2:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1051:2:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1051:18:2"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1074:10:2"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1086:6:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1071:2:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1071:22:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "1048:2:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1048:46:2"
                              },
                              "nodeType": "YulIf",
                              "src": "1045:2:2"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1133:2:2",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1137:10:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1126:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1126:22:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1126:22:2"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1157:17:2",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1168:6:2"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "1161:3:2",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1190:6:2"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "1198:2:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1183:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1183:18:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1183:18:2"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1210:22:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1221:6:2"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1229:2:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1217:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1217:15:2"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "1210:3:2"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1241:22:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1256:2:2"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1260:2:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1252:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1252:11:2"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "1245:3:2",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1309:26:2",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "1318:6:2"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "1326:6:2"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1311:6:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1311:22:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1311:22:2"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "1286:2:2"
                                          },
                                          {
                                            "name": "_5",
                                            "nodeType": "YulIdentifier",
                                            "src": "1290:2:2"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1282:3:2"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1282:11:2"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1295:2:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1278:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1278:20:2"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1300:7:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1275:2:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1275:33:2"
                              },
                              "nodeType": "YulIf",
                              "src": "1272:2:2"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1344:15:2",
                              "value": {
                                "name": "value4",
                                "nodeType": "YulIdentifier",
                                "src": "1353:6:2"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "1348:1:2",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1413:118:2",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "1434:3:2"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "1452:3:2"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1439:12:2"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1439:17:2"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1427:6:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1427:30:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1427:30:2"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1470:19:2",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "1481:3:2"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "1486:2:2"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1477:3:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1477:12:2"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "1470:3:2"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1502:19:2",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "1513:3:2"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "1518:2:2"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1509:3:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1509:12:2"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "1502:3:2"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "1379:1:2"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "1382:2:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1376:2:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1376:9:2"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "1386:18:2",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1388:14:2",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "1397:1:2"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1400:1:2",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1393:3:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1393:9:2"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "1388:1:2"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "1372:3:2",
                                "statements": []
                              },
                              "src": "1368:163:2"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1540:16:2",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1550:6:2"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "1540:6:2"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_uint256t_addresst_uint256t_array$_t_bytes32_$dyn_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "111:9:2",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "122:7:2",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "134:6:2",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "142:6:2",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "150:6:2",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "158:6:2",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "166:6:2",
                            "type": ""
                          }
                        ],
                        "src": "14:1548:2"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1714:100:2",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1731:3:2"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1736:6:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1724:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1724:19:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1724:19:2"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1763:3:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1768:2:2",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1759:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1759:12:2"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1773:6:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1752:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1752:28:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1752:28:2"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1789:19:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1800:3:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1805:2:2",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1796:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1796:12:2"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "1789:3:2"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "1682:3:2",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1687:6:2",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1695:6:2",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1706:3:2",
                            "type": ""
                          }
                        ],
                        "src": "1567:247:2"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1948:145:2",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1958:26:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1970:9:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1981:2:2",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1966:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1966:18:2"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1958:4:2"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2000:9:2"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "2015:6:2"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2031:3:2",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2036:1:2",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "2027:3:2"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2027:11:2"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2040:1:2",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "2023:3:2"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2023:19:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2011:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2011:32:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1993:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1993:51:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1993:51:2"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2064:9:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2075:2:2",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2060:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2060:18:2"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2080:6:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2053:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2053:34:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2053:34:2"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1909:9:2",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1920:6:2",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1928:6:2",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1939:4:2",
                            "type": ""
                          }
                        ],
                        "src": "1819:274:2"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2193:92:2",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2203:26:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2215:9:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2226:2:2",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2211:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2211:18:2"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2203:4:2"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2245:9:2"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "2270:6:2"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "2263:6:2"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2263:14:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "2256:6:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2256:22:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2238:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2238:41:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2238:41:2"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2162:9:2",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2173:6:2",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2184:4:2",
                            "type": ""
                          }
                        ],
                        "src": "2098:187:2"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2337:189:2",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2376:115:2",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "ret",
                                          "nodeType": "YulIdentifier",
                                          "src": "2397:3:2"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2406:3:2",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2411:10:2",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "2402:3:2"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2402:20:2"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2390:6:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2390:33:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2390:33:2"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2443:1:2",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2446:4:2",
                                          "type": "",
                                          "value": "0x11"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2436:6:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2436:15:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2436:15:2"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "ret",
                                          "nodeType": "YulIdentifier",
                                          "src": "2471:3:2"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2476:4:2",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2464:6:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2464:17:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2464:17:2"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2353:5:2"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2364:1:2",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "2360:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2360:6:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "2350:2:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2350:17:2"
                              },
                              "nodeType": "YulIf",
                              "src": "2347:2:2"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2500:20:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2511:5:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2518:1:2",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2507:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2507:13:2"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "2500:3:2"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "2319:5:2",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "2329:3:2",
                            "type": ""
                          }
                        ],
                        "src": "2290:236:2"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2563:95:2",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2580:1:2",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2587:3:2",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2592:10:2",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "2583:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2583:20:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2573:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2573:31:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2573:31:2"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2620:1:2",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2623:4:2",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2613:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2613:15:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2613:15:2"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2644:1:2",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2647:4:2",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "2637:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2637:15:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2637:15:2"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "2531:127:2"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_bytes32t_uint256t_addresst_uint256t_array$_t_bytes32_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        value0 := calldataload(headStart)\n        let _1 := 32\n        value1 := calldataload(add(headStart, _1))\n        let value := calldataload(add(headStart, 64))\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(value4, value4) }\n        value2 := value\n        value3 := calldataload(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        let _2 := 0xffffffffffffffff\n        if gt(offset, _2) { revert(value4, value4) }\n        let _3 := add(headStart, offset)\n        if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(value4, value4) }\n        let _4 := calldataload(_3)\n        if gt(_4, _2) { panic_error_0x41() }\n        let _5 := mul(_4, _1)\n        let memPtr := mload(64)\n        let newFreePtr := add(add(memPtr, _5), _1)\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        let dst := memPtr\n        mstore(memPtr, _4)\n        dst := add(memPtr, _1)\n        let src := add(_3, _1)\n        if gt(add(add(_3, _5), _1), dataEnd) { revert(value4, value4) }\n        let i := value4\n        for { } lt(i, _4) { i := add(i, 1) }\n        {\n            mstore(dst, calldataload(src))\n            dst := add(dst, _1)\n            src := add(src, _1)\n        }\n        value4 := memPtr\n    }\n    function abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        mstore(add(pos, 32), value1)\n        end := add(pos, 64)\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0))\n        {\n            mstore(ret, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(ret, 0x24)\n        }\n        ret := add(value, 1)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n}",
                  "id": 2,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061002b5760003560e01c80639ddc3d7914610030575b600080fd5b61004361003e36600461016d565b610059565b604051610050919061028b565b60405180910390f35b60008482511461006b575060006100a9565b60008484604051602001610080929190610272565b60408051601f19818403018152919052805160209091012090506100a58388836100b2565b9150505b95945050505050565b600081815b85518110156101625760008682815181106100e257634e487b7160e01b600052603260045260246000fd5b60200260200101519050808311610123578281604051602001610106929190610264565b60405160208183030381529060405280519060200120925061014f565b8083604051602001610136929190610264565b6040516020818303038152906040528051906020012092505b508061015a81610296565b9150506100b7565b509092149392505050565b600080600080600060a08688031215610184578081fd5b85359450602080870135945060408701356001600160a01b03811681146101a9578283fd5b935060608701359250608087013567ffffffffffffffff808211156101cc578384fd5b818901915089601f8301126101df578384fd5b8135818111156101f1576101f16102bd565b83810260405185828201018181108582111715610210576102106102bd565b604052828152858101935084860182860187018e101561022e578788fd5b8795505b83861015610250578035855260019590950194938601938601610232565b508096505050505050509295509295909350565b918252602082015260400190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b60006000198214156102b657634e487b7160e01b81526011600452602481fd5b5060010190565b634e487b7160e01b600052604160045260246000fdfea2646970667358221220c8bbddbdb64a745c6a10dea0bff33421c3a6a89d8932f33295ca44b9a4f4e15b64736f6c63430008000033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9DDC3D79 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0x16D JUMP JUMPDEST PUSH2 0x59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x50 SWAP2 SWAP1 PUSH2 0x28B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP5 DUP3 MLOAD EQ PUSH2 0x6B JUMPI POP PUSH1 0x0 PUSH2 0xA9 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x80 SWAP3 SWAP2 SWAP1 PUSH2 0x272 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SWAP1 POP PUSH2 0xA5 DUP4 DUP9 DUP4 PUSH2 0xB2 JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x162 JUMPI PUSH1 0x0 DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xE2 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 DUP4 GT PUSH2 0x123 JUMPI DUP3 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x106 SWAP3 SWAP2 SWAP1 PUSH2 0x264 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP3 POP PUSH2 0x14F JUMP JUMPDEST DUP1 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x136 SWAP3 SWAP2 SWAP1 PUSH2 0x264 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP3 POP JUMPDEST POP DUP1 PUSH2 0x15A DUP2 PUSH2 0x296 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xB7 JUMP JUMPDEST POP SWAP1 SWAP3 EQ SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x184 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP1 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1A9 JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1CC JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1DF JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1F1 JUMPI PUSH2 0x1F1 PUSH2 0x2BD JUMP JUMPDEST DUP4 DUP2 MUL PUSH1 0x40 MLOAD DUP6 DUP3 DUP3 ADD ADD DUP2 DUP2 LT DUP6 DUP3 GT OR ISZERO PUSH2 0x210 JUMPI PUSH2 0x210 PUSH2 0x2BD JUMP JUMPDEST PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP6 DUP2 ADD SWAP4 POP DUP5 DUP7 ADD DUP3 DUP7 ADD DUP8 ADD DUP15 LT ISZERO PUSH2 0x22E JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP6 POP JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0x250 JUMPI DUP1 CALLDATALOAD DUP6 MSTORE PUSH1 0x1 SWAP6 SWAP1 SWAP6 ADD SWAP5 SWAP4 DUP7 ADD SWAP4 DUP7 ADD PUSH2 0x232 JUMP JUMPDEST POP DUP1 SWAP7 POP POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x2B6 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 DUP2 REVERT JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC8 0xBB 0xDD 0xBD 0xB6 0x4A PUSH21 0x5C6A10DEA0BFF33421C3A6A89D8932F33295CA44B9 LOG4 DELEGATECALL 0xE1 JUMPDEST PUSH5 0x736F6C6343 STOP ADDMOD STOP STOP CALLER ",
              "sourceMap": "127:451:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;205:371;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;396:4;432:9;416:5;:12;:25;412:43;;-1:-1:-1;450:5:1;443:12;;412:43;465:12;501:6;509:7;490:27;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;490:27:1;;;;;;;;;480:38;;490:27;480:38;;;;;-1:-1:-1;535:34:1;:5;548:14;480:38;535:12;:34::i;:::-;528:41;;;205:371;;;;;;;;:::o;777:809:0:-;898:4;937;898;952:515;976:5;:12;972:1;:16;952:515;;;1009:20;1032:5;1038:1;1032:8;;;;;;-1:-1:-1;;;1032:8:0;;;;;;;;;;;;;;;1009:31;;1075:12;1059;:28;1055:402;;1227:12;1241;1210:44;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1200:55;;;;;;1185:70;;1055:402;;;1414:12;1428;1397:44;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1387:55;;;;;;1372:70;;1055:402;-1:-1:-1;990:3:0;;;;:::i;:::-;;;;952:515;;;-1:-1:-1;1559:20:0;;;;777:809;-1:-1:-1;;;777:809:0:o;14:1548:2:-;;;;;;219:3;207:9;198:7;194:23;190:33;187:2;;;241:6;233;226:22;187:2;269:23;;;-1:-1:-1;311:2:2;345:18;;;332:32;;-1:-1:-1;414:2:2;399:18;;386:32;-1:-1:-1;;;;;447:31:2;;437:42;;427:2;;498:6;490;483:22;427:2;526:5;-1:-1:-1;578:2:2;563:18;;550:32;;-1:-1:-1;633:3:2;618:19;;605:33;657:18;687:14;;;684:2;;;719:6;711;704:22;684:2;762:6;751:9;747:22;737:32;;807:7;800:4;796:2;792:13;788:27;778:2;;834:6;826;819:22;778:2;875;862:16;897:2;893;890:10;887:2;;;903:18;;:::i;:::-;950:2;946;942:11;982:2;976:9;1033:2;1028;1020:6;1016:15;1012:24;1086:6;1074:10;1071:22;1066:2;1054:10;1051:18;1048:46;1045:2;;;1097:18;;:::i;:::-;1133:2;1126:22;1183:18;;;1217:15;;;;-1:-1:-1;1252:11:2;;;1282;;;1278:20;;1275:33;-1:-1:-1;1272:2:2;;;1326:6;1318;1311:22;1272:2;1353:6;1344:15;;1368:163;1382:2;1379:1;1376:9;1368:163;;;1439:17;;1427:30;;1400:1;1393:9;;;;;1477:12;;;;1509;;1368:163;;;1372:3;1550:6;1540:16;;;;;;;;177:1385;;;;;;;;:::o;1567:247::-;1724:19;;;1768:2;1759:12;;1752:28;1805:2;1796:12;;1714:100::o;1819:274::-;-1:-1:-1;;;;;2011:32:2;;;;1993:51;;2075:2;2060:18;;2053:34;1981:2;1966:18;;1948:145::o;2098:187::-;2263:14;;2256:22;2238:41;;2226:2;2211:18;;2193:92::o;2290:236::-;;-1:-1:-1;;2350:17:2;;2347:2;;;-1:-1:-1;;;2390:33:2;;2446:4;2443:1;2436:15;2476:4;2397:3;2464:17;2347:2;-1:-1:-1;2518:1:2;2507:13;;2337:189::o;2531:127::-;2592:10;2587:3;2583:20;2580:1;2573:31;2623:4;2620:1;2613:15;2647:4;2644:1;2637:15"
            },
            "methodIdentifiers": {
              "containsNode(bytes32,uint256,address,uint256,bytes32[])": "9ddc3d79"
            }
          }
        }
      }
    },
    "sources": {
      "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol",
          "exportedSymbols": {
            "MerkleProof": [
              70
            ]
          },
          "id": 71,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:0"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 2,
                "nodeType": "StructuredDocumentation",
                "src": "58:364:0",
                "text": " @dev These functions deal with verification of Merkle Trees proofs.\n The proofs can be generated using the JavaScript library\n https://github.com/miguelmota/merkletreejs[merkletreejs].\n Note: the hashing algorithm should be keccak256 and pair sorting should be enabled.\n See `test/utils/cryptography/MerkleProof.test.js` for some examples."
              },
              "fullyImplemented": true,
              "id": 70,
              "linearizedBaseContracts": [
                70
              ],
              "name": "MerkleProof",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 68,
                    "nodeType": "Block",
                    "src": "904:682:0",
                    "statements": [
                      {
                        "assignments": [
                          16
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16,
                            "mutability": "mutable",
                            "name": "computedHash",
                            "nodeType": "VariableDeclaration",
                            "scope": 68,
                            "src": "914:20:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 15,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "914:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18,
                        "initialValue": {
                          "id": 17,
                          "name": "leaf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10,
                          "src": "937:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "914:27:0"
                      },
                      {
                        "body": {
                          "id": 62,
                          "nodeType": "Block",
                          "src": "995:472:0",
                          "statements": [
                            {
                              "assignments": [
                                31
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 31,
                                  "mutability": "mutable",
                                  "name": "proofElement",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 62,
                                  "src": "1009:20:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "typeName": {
                                    "id": 30,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1009:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 35,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 32,
                                  "name": "proof",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6,
                                  "src": "1032:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                    "typeString": "bytes32[] memory"
                                  }
                                },
                                "id": 34,
                                "indexExpression": {
                                  "id": 33,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20,
                                  "src": "1038:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1032:8:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1009:31:0"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "id": 38,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 36,
                                  "name": "computedHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16,
                                  "src": "1059:12:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "id": 37,
                                  "name": "proofElement",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31,
                                  "src": "1075:12:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "1059:28:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 60,
                                "nodeType": "Block",
                                "src": "1276:181:0",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 58,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 50,
                                        "name": "computedHash",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16,
                                        "src": "1372:12:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "id": 54,
                                                "name": "proofElement",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 31,
                                                "src": "1414:12:0",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              },
                                              {
                                                "id": 55,
                                                "name": "computedHash",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 16,
                                                "src": "1428:12:0",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                },
                                                {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              ],
                                              "expression": {
                                                "id": 52,
                                                "name": "abi",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": -1,
                                                "src": "1397:3:0",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_magic_abi",
                                                  "typeString": "abi"
                                                }
                                              },
                                              "id": 53,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberName": "encodePacked",
                                              "nodeType": "MemberAccess",
                                              "src": "1397:16:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                "typeString": "function () pure returns (bytes memory)"
                                              }
                                            },
                                            "id": 56,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "1397:44:0",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 51,
                                          "name": "keccak256",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -8,
                                          "src": "1387:9:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 57,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1387:55:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "1372:70:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 59,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1372:70:0"
                                  }
                                ]
                              },
                              "id": 61,
                              "nodeType": "IfStatement",
                              "src": "1055:402:0",
                              "trueBody": {
                                "id": 49,
                                "nodeType": "Block",
                                "src": "1089:181:0",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 47,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 39,
                                        "name": "computedHash",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16,
                                        "src": "1185:12:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "id": 43,
                                                "name": "computedHash",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 16,
                                                "src": "1227:12:0",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              },
                                              {
                                                "id": 44,
                                                "name": "proofElement",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 31,
                                                "src": "1241:12:0",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                },
                                                {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              ],
                                              "expression": {
                                                "id": 41,
                                                "name": "abi",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": -1,
                                                "src": "1210:3:0",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_magic_abi",
                                                  "typeString": "abi"
                                                }
                                              },
                                              "id": 42,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberName": "encodePacked",
                                              "nodeType": "MemberAccess",
                                              "src": "1210:16:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                "typeString": "function () pure returns (bytes memory)"
                                              }
                                            },
                                            "id": 45,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "1210:44:0",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 40,
                                          "name": "keccak256",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -8,
                                          "src": "1200:9:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 46,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1200:55:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "1185:70:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 48,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1185:70:0"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 26,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 23,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20,
                            "src": "972:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 24,
                              "name": "proof",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6,
                              "src": "976:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 25,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "976:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "972:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 63,
                        "initializationExpression": {
                          "assignments": [
                            20
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 20,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 63,
                              "src": "957:9:0",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 19,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "957:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 22,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 21,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "969:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "957:13:0"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 28,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "990:3:0",
                            "subExpression": {
                              "id": 27,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20,
                              "src": "990:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 29,
                          "nodeType": "ExpressionStatement",
                          "src": "990:3:0"
                        },
                        "nodeType": "ForStatement",
                        "src": "952:515:0"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 66,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 64,
                            "name": "computedHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16,
                            "src": "1559:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 65,
                            "name": "root",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8,
                            "src": "1575:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "1559:20:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 14,
                        "id": 67,
                        "nodeType": "Return",
                        "src": "1552:27:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3,
                    "nodeType": "StructuredDocumentation",
                    "src": "449:323:0",
                    "text": " @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree\n defined by `root`. For this, a `proof` must be provided, containing\n sibling hashes on the branch from the leaf to the root of the tree. Each\n pair of leaves and each pair of pre-images are assumed to be sorted."
                  },
                  "id": 69,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "verify",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6,
                        "mutability": "mutable",
                        "name": "proof",
                        "nodeType": "VariableDeclaration",
                        "scope": 69,
                        "src": "802:22:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "802:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 5,
                          "nodeType": "ArrayTypeName",
                          "src": "802:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                            "typeString": "bytes32[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8,
                        "mutability": "mutable",
                        "name": "root",
                        "nodeType": "VariableDeclaration",
                        "scope": 69,
                        "src": "834:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 7,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "834:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10,
                        "mutability": "mutable",
                        "name": "leaf",
                        "nodeType": "VariableDeclaration",
                        "scope": 69,
                        "src": "856:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 9,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "856:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "792:82:0"
                  },
                  "returnParameters": {
                    "id": 14,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 69,
                        "src": "898:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 12,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "898:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "897:6:0"
                  },
                  "scope": 70,
                  "src": "777:809:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 71,
              "src": "423:1165:0"
            }
          ],
          "src": "33:1556:0"
        },
        "id": 0
      },
      "contracts/services/MerkleTreePathValidator.sol": {
        "ast": {
          "absolutePath": "contracts/services/MerkleTreePathValidator.sol",
          "exportedSymbols": {
            "MerkleProof": [
              70
            ],
            "MerkleTreePathValidator": [
              118
            ]
          },
          "id": 119,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 72,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:1"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol",
              "file": "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol",
              "id": 73,
              "nodeType": "ImportDirective",
              "scope": 119,
              "sourceUnit": 71,
              "src": "57:68:1",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 118,
              "linearizedBaseContracts": [
                118
              ],
              "name": "MerkleTreePathValidator",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 77,
                  "libraryName": {
                    "id": 74,
                    "name": "MerkleProof",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 70,
                    "src": "173:11:1"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "167:32:1",
                  "typeName": {
                    "baseType": {
                      "id": 75,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "189:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 76,
                    "nodeType": "ArrayTypeName",
                    "src": "189:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  }
                },
                {
                  "body": {
                    "id": 116,
                    "nodeType": "Block",
                    "src": "402:174:1",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 96,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 93,
                              "name": "proof",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 88,
                              "src": "416:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 94,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "416:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 95,
                            "name": "treeDepth",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 81,
                            "src": "432:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "416:25:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 99,
                        "nodeType": "IfStatement",
                        "src": "412:43:1",
                        "trueBody": {
                          "expression": {
                            "hexValue": "66616c7365",
                            "id": 97,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "450:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "functionReturnParameters": 92,
                          "id": 98,
                          "nodeType": "Return",
                          "src": "443:12:1"
                        }
                      },
                      {
                        "assignments": [
                          101
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 101,
                            "mutability": "mutable",
                            "name": "leaf",
                            "nodeType": "VariableDeclaration",
                            "scope": 116,
                            "src": "465:12:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 100,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "465:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 109,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 105,
                                  "name": "wallet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 83,
                                  "src": "501:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 106,
                                  "name": "balance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 85,
                                  "src": "509:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 103,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "490:3:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 104,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "src": "490:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 107,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "490:27:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 102,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "480:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 108,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "480:38:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "465:53:1"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 112,
                              "name": "merkleTreeRoot",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 79,
                              "src": "548:14:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 113,
                              "name": "leaf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 101,
                              "src": "564:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "id": 110,
                              "name": "proof",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 88,
                              "src": "535:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 111,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "verify",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 69,
                            "src": "535:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$bound_to$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                              "typeString": "function (bytes32[] memory,bytes32,bytes32) pure returns (bool)"
                            }
                          },
                          "id": 114,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "535:34:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 92,
                        "id": 115,
                        "nodeType": "Return",
                        "src": "528:41:1"
                      }
                    ]
                  },
                  "functionSelector": "9ddc3d79",
                  "id": 117,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "containsNode",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 89,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 79,
                        "mutability": "mutable",
                        "name": "merkleTreeRoot",
                        "nodeType": "VariableDeclaration",
                        "scope": 117,
                        "src": "236:22:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 78,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "236:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 81,
                        "mutability": "mutable",
                        "name": "treeDepth",
                        "nodeType": "VariableDeclaration",
                        "scope": 117,
                        "src": "268:17:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 80,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "268:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 83,
                        "mutability": "mutable",
                        "name": "wallet",
                        "nodeType": "VariableDeclaration",
                        "scope": 117,
                        "src": "295:14:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 82,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "295:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 85,
                        "mutability": "mutable",
                        "name": "balance",
                        "nodeType": "VariableDeclaration",
                        "scope": 117,
                        "src": "319:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 84,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "319:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 88,
                        "mutability": "mutable",
                        "name": "proof",
                        "nodeType": "VariableDeclaration",
                        "scope": 117,
                        "src": "344:22:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 86,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "344:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 87,
                          "nodeType": "ArrayTypeName",
                          "src": "344:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                            "typeString": "bytes32[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "226:146:1"
                  },
                  "returnParameters": {
                    "id": 92,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 91,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 117,
                        "src": "396:4:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 90,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "396:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "395:6:1"
                  },
                  "scope": 118,
                  "src": "205:371:1",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 119,
              "src": "127:451:1"
            }
          ],
          "src": "32:547:1"
        },
        "id": 1
      }
    }
  }
}
