{
  "abi": [],
  "bytecode": {
    "object": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f066e1d8e5ab908a20937b029dfa91f4e1ad1f984eda01d3d406b36f4dd3d39464736f6c63430008160033",
    "sourceMap": "7339:4665:10:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;7339:4665:10;;;;;;;;;;;;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f066e1d8e5ab908a20937b029dfa91f4e1ad1f984eda01d3d406b36f4dd3d39464736f6c63430008160033",
    "sourceMap": "7339:4665:10:-:0;;;;;;;;",
    "linkReferences": {}
  },
  "methodIdentifiers": {},
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdStorage.sol\":\"stdStorage\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26\",\"dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c\",\"dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.22+commit.4fc1097e"
    },
    "language": "Solidity",
    "output": {
      "abi": [],
      "devdoc": {
        "kind": "dev",
        "methods": {},
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {},
        "version": 1
      }
    },
    "settings": {
      "remappings": [
        "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
        "@uniswap/v3-core/=lib_uniswap/v3-core/",
        "@uniswap/v3-periphery/=lib_uniswap/v3-periphery/",
        "ds-test/=lib/forge-std/lib/ds-test/src/",
        "forge-std/=lib/forge-std/src/",
        "openzeppelin-contracts/=lib/openzeppelin-contracts/",
        "v3-core/=lib_uniswap/v3-core/",
        "v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/"
      ],
      "optimizer": {
        "runs": 999999999,
        "details": {
          "peephole": true,
          "inliner": true,
          "jumpdestRemover": true,
          "orderLiterals": true,
          "deduplicate": true,
          "cse": true,
          "constantOptimizer": true,
          "yul": true,
          "yulDetails": {
            "stackAllocation": true,
            "optimizerSteps": "dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu"
          }
        }
      },
      "metadata": {
        "bytecodeHash": "ipfs"
      },
      "compilationTarget": {
        "lib/forge-std/src/StdStorage.sol": "stdStorage"
      },
      "libraries": {}
    },
    "sources": {
      "lib/forge-std/src/StdStorage.sol": {
        "keccak256": "0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d",
        "urls": [
          "bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26",
          "dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9"
        ],
        "license": "MIT"
      },
      "lib/forge-std/src/Vm.sol": {
        "keccak256": "0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5",
        "urls": [
          "bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c",
          "dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw"
        ],
        "license": "MIT"
      }
    },
    "version": 1
  },
  "ast": {
    "absolutePath": "lib/forge-std/src/StdStorage.sol",
    "id": 9828,
    "exportedSymbols": {
      "StdStorage": [
        8374
      ],
      "Vm": [
        13464
      ],
      "stdStorage": [
        9827
      ],
      "stdStorageSafe": [
        9266
      ]
    },
    "nodeType": "SourceUnit",
    "src": "32:11973:10",
    "nodes": [
      {
        "id": 8344,
        "nodeType": "PragmaDirective",
        "src": "32:31:10",
        "nodes": [],
        "literals": [
          "solidity",
          ">=",
          "0.6",
          ".2",
          "<",
          "0.9",
          ".0"
        ]
      },
      {
        "id": 8346,
        "nodeType": "ImportDirective",
        "src": "65:28:10",
        "nodes": [],
        "absolutePath": "lib/forge-std/src/Vm.sol",
        "file": "./Vm.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 9828,
        "sourceUnit": 13465,
        "symbolAliases": [
          {
            "foreign": {
              "id": 8345,
              "name": "Vm",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 13464,
              "src": "73:2:10",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 8374,
        "nodeType": "StructDefinition",
        "src": "95:271:10",
        "nodes": [],
        "canonicalName": "StdStorage",
        "members": [
          {
            "constant": false,
            "id": 8354,
            "mutability": "mutable",
            "name": "slots",
            "nameLocation": "186:5:10",
            "nodeType": "VariableDeclaration",
            "scope": 8374,
            "src": "119:72:10",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_uint256_$_$_$",
              "typeString": "mapping(address => mapping(bytes4 => mapping(bytes32 => uint256)))"
            },
            "typeName": {
              "id": 8353,
              "keyName": "",
              "keyNameLocation": "-1:-1:-1",
              "keyType": {
                "id": 8347,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "127:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "119:66:10",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_uint256_$_$_$",
                "typeString": "mapping(address => mapping(bytes4 => mapping(bytes32 => uint256)))"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 8352,
                "keyName": "",
                "keyNameLocation": "-1:-1:-1",
                "keyType": {
                  "id": 8348,
                  "name": "bytes4",
                  "nodeType": "ElementaryTypeName",
                  "src": "146:6:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  }
                },
                "nodeType": "Mapping",
                "src": "138:46:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_uint256_$_$",
                  "typeString": "mapping(bytes4 => mapping(bytes32 => uint256))"
                },
                "valueName": "",
                "valueNameLocation": "-1:-1:-1",
                "valueType": {
                  "id": 8351,
                  "keyName": "",
                  "keyNameLocation": "-1:-1:-1",
                  "keyType": {
                    "id": 8349,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "164:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "156:27:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                    "typeString": "mapping(bytes32 => uint256)"
                  },
                  "valueName": "",
                  "valueNameLocation": "-1:-1:-1",
                  "valueType": {
                    "id": 8350,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "175:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 8362,
            "mutability": "mutable",
            "name": "finds",
            "nameLocation": "261:5:10",
            "nodeType": "VariableDeclaration",
            "scope": 8374,
            "src": "197:69:10",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_bool_$_$_$",
              "typeString": "mapping(address => mapping(bytes4 => mapping(bytes32 => bool)))"
            },
            "typeName": {
              "id": 8361,
              "keyName": "",
              "keyNameLocation": "-1:-1:-1",
              "keyType": {
                "id": 8355,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "205:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "197:63:10",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_bool_$_$_$",
                "typeString": "mapping(address => mapping(bytes4 => mapping(bytes32 => bool)))"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 8360,
                "keyName": "",
                "keyNameLocation": "-1:-1:-1",
                "keyType": {
                  "id": 8356,
                  "name": "bytes4",
                  "nodeType": "ElementaryTypeName",
                  "src": "224:6:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  }
                },
                "nodeType": "Mapping",
                "src": "216:43:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_bool_$_$",
                  "typeString": "mapping(bytes4 => mapping(bytes32 => bool))"
                },
                "valueName": "",
                "valueNameLocation": "-1:-1:-1",
                "valueType": {
                  "id": 8359,
                  "keyName": "",
                  "keyNameLocation": "-1:-1:-1",
                  "keyType": {
                    "id": 8357,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "242:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "234:24:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                    "typeString": "mapping(bytes32 => bool)"
                  },
                  "valueName": "",
                  "valueNameLocation": "-1:-1:-1",
                  "valueType": {
                    "id": 8358,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "253:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  }
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 8365,
            "mutability": "mutable",
            "name": "_keys",
            "nameLocation": "282:5:10",
            "nodeType": "VariableDeclaration",
            "scope": 8374,
            "src": "272:15:10",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
              "typeString": "bytes32[]"
            },
            "typeName": {
              "baseType": {
                "id": 8363,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "272:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "id": 8364,
              "nodeType": "ArrayTypeName",
              "src": "272:9:10",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                "typeString": "bytes32[]"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 8367,
            "mutability": "mutable",
            "name": "_sig",
            "nameLocation": "300:4:10",
            "nodeType": "VariableDeclaration",
            "scope": 8374,
            "src": "293:11:10",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 8366,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "293:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 8369,
            "mutability": "mutable",
            "name": "_depth",
            "nameLocation": "318:6:10",
            "nodeType": "VariableDeclaration",
            "scope": 8374,
            "src": "310:14:10",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 8368,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "310:7:10",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 8371,
            "mutability": "mutable",
            "name": "_target",
            "nameLocation": "338:7:10",
            "nodeType": "VariableDeclaration",
            "scope": 8374,
            "src": "330:15:10",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 8370,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "330:7:10",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 8373,
            "mutability": "mutable",
            "name": "_set",
            "nameLocation": "359:4:10",
            "nodeType": "VariableDeclaration",
            "scope": 8374,
            "src": "351:12:10",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 8372,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "351:7:10",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "internal"
          }
        ],
        "name": "StdStorage",
        "nameLocation": "102:10:10",
        "scope": 9828,
        "visibility": "public"
      },
      {
        "id": 9266,
        "nodeType": "ContractDefinition",
        "src": "368:6969:10",
        "nodes": [
          {
            "id": 8384,
            "nodeType": "EventDefinition",
            "src": "397:74:10",
            "nodes": [],
            "anonymous": false,
            "eventSelector": "9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed",
            "name": "SlotFound",
            "nameLocation": "403:9:10",
            "parameters": {
              "id": 8383,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8376,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "who",
                  "nameLocation": "421:3:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 8384,
                  "src": "413:11:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8375,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "413:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8378,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "fsig",
                  "nameLocation": "433:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 8384,
                  "src": "426:11:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 8377,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "426:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8380,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "keysHash",
                  "nameLocation": "447:8:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 8384,
                  "src": "439:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8379,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "439:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8382,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "slot",
                  "nameLocation": "465:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 8384,
                  "src": "457:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8381,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "457:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "412:58:10"
            }
          },
          {
            "id": 8390,
            "nodeType": "EventDefinition",
            "src": "476:54:10",
            "nodes": [],
            "anonymous": false,
            "eventSelector": "080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5",
            "name": "WARNING_UninitedSlot",
            "nameLocation": "482:20:10",
            "parameters": {
              "id": 8389,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8386,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "who",
                  "nameLocation": "511:3:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 8390,
                  "src": "503:11:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8385,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "503:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8388,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "slot",
                  "nameLocation": "524:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 8390,
                  "src": "516:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8387,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "516:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "502:27:10"
            }
          },
          {
            "id": 8407,
            "nodeType": "VariableDeclaration",
            "src": "536:84:10",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "vm",
            "nameLocation": "556:2:10",
            "scope": 9266,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Vm_$13464",
              "typeString": "contract Vm"
            },
            "typeName": {
              "id": 8392,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 8391,
                "name": "Vm",
                "nameLocations": [
                  "536:2:10"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 13464,
                "src": "536:2:10"
              },
              "referencedDeclaration": 13464,
              "src": "536:2:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Vm_$13464",
                "typeString": "contract Vm"
              }
            },
            "value": {
              "arguments": [
                {
                  "arguments": [
                    {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6865766d20636865617420636f6465",
                                  "id": 8401,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "598:17:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d",
                                    "typeString": "literal_string \"hevm cheat code\""
                                  },
                                  "value": "hevm cheat code"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d",
                                    "typeString": "literal_string \"hevm cheat code\""
                                  }
                                ],
                                "id": 8400,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "588:9:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 8402,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "588:28:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 8399,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "580:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 8398,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "580:7:10",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8403,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "580:37:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 8397,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "572:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint160_$",
                          "typeString": "type(uint160)"
                        },
                        "typeName": {
                          "id": 8396,
                          "name": "uint160",
                          "nodeType": "ElementaryTypeName",
                          "src": "572:7:10",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 8404,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "572:46:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    ],
                    "id": 8395,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "nodeType": "ElementaryTypeNameExpression",
                    "src": "564:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_address_$",
                      "typeString": "type(address)"
                    },
                    "typeName": {
                      "id": 8394,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "564:7:10",
                      "typeDescriptions": {}
                    }
                  },
                  "id": 8405,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "typeConversion",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "564:55:10",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                ],
                "id": 8393,
                "name": "Vm",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 13464,
                "src": "561:2:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_contract$_Vm_$13464_$",
                  "typeString": "type(contract Vm)"
                }
              },
              "id": 8406,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "nameLocations": [],
              "names": [],
              "nodeType": "FunctionCall",
              "src": "561:59:10",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Vm_$13464",
                "typeString": "contract Vm"
              }
            },
            "visibility": "private"
          },
          {
            "id": 8425,
            "nodeType": "FunctionDefinition",
            "src": "627:123:10",
            "nodes": [],
            "body": {
              "id": 8424,
              "nodeType": "Block",
              "src": "694:56:10",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 8419,
                                "name": "sigStr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8409,
                                "src": "734:6:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              ],
                              "id": 8418,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "728:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                "typeString": "type(bytes storage pointer)"
                              },
                              "typeName": {
                                "id": 8417,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "728:5:10",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 8420,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "728:13:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 8416,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -8,
                          "src": "718:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 8421,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "718:24:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 8415,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "711:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes4_$",
                        "typeString": "type(bytes4)"
                      },
                      "typeName": {
                        "id": 8414,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "711:6:10",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 8422,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "711:32:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 8413,
                  "id": 8423,
                  "nodeType": "Return",
                  "src": "704:39:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "sigs",
            "nameLocation": "636:4:10",
            "parameters": {
              "id": 8410,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8409,
                  "mutability": "mutable",
                  "name": "sigStr",
                  "nameLocation": "655:6:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 8425,
                  "src": "641:20:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8408,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "641:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "640:22:10"
            },
            "returnParameters": {
              "id": 8413,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8412,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 8425,
                  "src": "686:6:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 8411,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "686:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "685:8:10"
            },
            "scope": 9266,
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 8869,
            "nodeType": "FunctionDefinition",
            "src": "1264:3197:10",
            "nodes": [],
            "body": {
              "id": 8868,
              "nodeType": "Block",
              "src": "1330:3131:10",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    8435
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8435,
                      "mutability": "mutable",
                      "name": "who",
                      "nameLocation": "1348:3:10",
                      "nodeType": "VariableDeclaration",
                      "scope": 8868,
                      "src": "1340:11:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8434,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1340:7:10",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 8438,
                  "initialValue": {
                    "expression": {
                      "id": 8436,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8429,
                      "src": "1354:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                        "typeString": "struct StdStorage storage pointer"
                      }
                    },
                    "id": 8437,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "1359:7:10",
                    "memberName": "_target",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 8371,
                    "src": "1354:12:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1340:26:10"
                },
                {
                  "assignments": [
                    8440
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8440,
                      "mutability": "mutable",
                      "name": "fsig",
                      "nameLocation": "1383:4:10",
                      "nodeType": "VariableDeclaration",
                      "scope": 8868,
                      "src": "1376:11:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 8439,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "1376:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 8443,
                  "initialValue": {
                    "expression": {
                      "id": 8441,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8429,
                      "src": "1390:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                        "typeString": "struct StdStorage storage pointer"
                      }
                    },
                    "id": 8442,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "1395:4:10",
                    "memberName": "_sig",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 8367,
                    "src": "1390:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1376:23:10"
                },
                {
                  "assignments": [
                    8445
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8445,
                      "mutability": "mutable",
                      "name": "field_depth",
                      "nameLocation": "1417:11:10",
                      "nodeType": "VariableDeclaration",
                      "scope": 8868,
                      "src": "1409:19:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8444,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1409:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 8448,
                  "initialValue": {
                    "expression": {
                      "id": 8446,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8429,
                      "src": "1431:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                        "typeString": "struct StdStorage storage pointer"
                      }
                    },
                    "id": 8447,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "1436:6:10",
                    "memberName": "_depth",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 8369,
                    "src": "1431:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1409:33:10"
                },
                {
                  "assignments": [
                    8453
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8453,
                      "mutability": "mutable",
                      "name": "ins",
                      "nameLocation": "1469:3:10",
                      "nodeType": "VariableDeclaration",
                      "scope": 8868,
                      "src": "1452:20:10",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 8451,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1452:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 8452,
                        "nodeType": "ArrayTypeName",
                        "src": "1452:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 8456,
                  "initialValue": {
                    "expression": {
                      "id": 8454,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8429,
                      "src": "1475:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                        "typeString": "struct StdStorage storage pointer"
                      }
                    },
                    "id": 8455,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "1480:5:10",
                    "memberName": "_keys",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 8365,
                    "src": "1475:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                      "typeString": "bytes32[] storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1452:33:10"
                },
                {
                  "condition": {
                    "baseExpression": {
                      "baseExpression": {
                        "baseExpression": {
                          "expression": {
                            "id": 8457,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8429,
                            "src": "1536:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                              "typeString": "struct StdStorage storage pointer"
                            }
                          },
                          "id": 8458,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "1541:5:10",
                          "memberName": "finds",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8362,
                          "src": "1536:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_bool_$_$_$",
                            "typeString": "mapping(address => mapping(bytes4 => mapping(bytes32 => bool)))"
                          }
                        },
                        "id": 8460,
                        "indexExpression": {
                          "id": 8459,
                          "name": "who",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8435,
                          "src": "1547:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1536:15:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_bool_$_$",
                          "typeString": "mapping(bytes4 => mapping(bytes32 => bool))"
                        }
                      },
                      "id": 8462,
                      "indexExpression": {
                        "id": 8461,
                        "name": "fsig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8440,
                        "src": "1552:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1536:21:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                        "typeString": "mapping(bytes32 => bool)"
                      }
                    },
                    "id": 8470,
                    "indexExpression": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "id": 8466,
                              "name": "ins",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8453,
                              "src": "1585:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            {
                              "id": 8467,
                              "name": "field_depth",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8445,
                              "src": "1590:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 8464,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "1568:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 8465,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "1572:12:10",
                            "memberName": "encodePacked",
                            "nodeType": "MemberAccess",
                            "src": "1568:16:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 8468,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1568:34:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 8463,
                        "name": "keccak256",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -8,
                        "src": "1558:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (bytes memory) pure returns (bytes32)"
                        }
                      },
                      "id": 8469,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1558:45:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1536:68:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 8487,
                  "nodeType": "IfStatement",
                  "src": "1532:174:10",
                  "trueBody": {
                    "id": 8486,
                    "nodeType": "Block",
                    "src": "1606:100:10",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "baseExpression": {
                                "expression": {
                                  "id": 8471,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8429,
                                  "src": "1627:4:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                                    "typeString": "struct StdStorage storage pointer"
                                  }
                                },
                                "id": 8472,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "1632:5:10",
                                "memberName": "slots",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 8354,
                                "src": "1627:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_uint256_$_$_$",
                                  "typeString": "mapping(address => mapping(bytes4 => mapping(bytes32 => uint256)))"
                                }
                              },
                              "id": 8474,
                              "indexExpression": {
                                "id": 8473,
                                "name": "who",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8435,
                                "src": "1638:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1627:15:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_uint256_$_$",
                                "typeString": "mapping(bytes4 => mapping(bytes32 => uint256))"
                              }
                            },
                            "id": 8476,
                            "indexExpression": {
                              "id": 8475,
                              "name": "fsig",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8440,
                              "src": "1643:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1627:21:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                              "typeString": "mapping(bytes32 => uint256)"
                            }
                          },
                          "id": 8484,
                          "indexExpression": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 8480,
                                    "name": "ins",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8453,
                                    "src": "1676:3:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                      "typeString": "bytes32[] memory"
                                    }
                                  },
                                  {
                                    "id": 8481,
                                    "name": "field_depth",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8445,
                                    "src": "1681:11:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                      "typeString": "bytes32[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 8478,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "1659:3:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 8479,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "1663:12:10",
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "src": "1659:16:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 8482,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1659:34:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 8477,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "1649:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 8483,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1649:45:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1627:68:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 8433,
                        "id": 8485,
                        "nodeType": "Return",
                        "src": "1620:75:10"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    8489
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8489,
                      "mutability": "mutable",
                      "name": "cald",
                      "nameLocation": "1728:4:10",
                      "nodeType": "VariableDeclaration",
                      "scope": 8868,
                      "src": "1715:17:10",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 8488,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1715:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 8497,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 8492,
                        "name": "fsig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8440,
                        "src": "1752:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 8494,
                            "name": "ins",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8453,
                            "src": "1766:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          ],
                          "id": 8493,
                          "name": "flatten",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9265,
                          "src": "1758:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes32[] memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 8495,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1758:12:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 8490,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "1735:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 8491,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "1739:12:10",
                      "memberName": "encodePacked",
                      "nodeType": "MemberAccess",
                      "src": "1735:16:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () pure returns (bytes memory)"
                      }
                    },
                    "id": 8496,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1735:36:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1715:56:10"
                },
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 8498,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8407,
                        "src": "1781:2:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$13464",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 8500,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1784:6:10",
                      "memberName": "record",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12312,
                      "src": "1781:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 8501,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1781:11:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8502,
                  "nodeType": "ExpressionStatement",
                  "src": "1781:11:10"
                },
                {
                  "assignments": [
                    8504
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8504,
                      "mutability": "mutable",
                      "name": "fdat",
                      "nameLocation": "1810:4:10",
                      "nodeType": "VariableDeclaration",
                      "scope": 8868,
                      "src": "1802:12:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 8503,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1802:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 8505,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1802:12:10"
                },
                {
                  "id": 8522,
                  "nodeType": "Block",
                  "src": "1824:128:10",
                  "statements": [
                    {
                      "assignments": [
                        null,
                        8507
                      ],
                      "declarations": [
                        null,
                        {
                          "constant": false,
                          "id": 8507,
                          "mutability": "mutable",
                          "name": "rdat",
                          "nameLocation": "1854:4:10",
                          "nodeType": "VariableDeclaration",
                          "scope": 8522,
                          "src": "1841:17:10",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 8506,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "1841:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 8512,
                      "initialValue": {
                        "arguments": [
                          {
                            "id": 8510,
                            "name": "cald",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8489,
                            "src": "1877:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "id": 8508,
                            "name": "who",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8435,
                            "src": "1862:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 8509,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "1866:10:10",
                          "memberName": "staticcall",
                          "nodeType": "MemberAccess",
                          "src": "1862:14:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                          }
                        },
                        "id": 8511,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1862:20:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1838:44:10"
                    },
                    {
                      "expression": {
                        "id": 8520,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 8513,
                          "name": "fdat",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8504,
                          "src": "1896:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 8515,
                              "name": "rdat",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8507,
                              "src": "1918:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8518,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "hexValue": "3332",
                                "id": 8516,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1924:2:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 8517,
                                "name": "field_depth",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8445,
                                "src": "1929:11:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1924:16:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8514,
                            "name": "bytesToBytes32",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9224,
                            "src": "1903:14:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                            }
                          },
                          "id": 8519,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1903:38:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "1896:45:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "id": 8521,
                      "nodeType": "ExpressionStatement",
                      "src": "1896:45:10"
                    }
                  ]
                },
                {
                  "assignments": [
                    8527,
                    null
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8527,
                      "mutability": "mutable",
                      "name": "reads",
                      "nameLocation": "1980:5:10",
                      "nodeType": "VariableDeclaration",
                      "scope": 8868,
                      "src": "1963:22:10",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 8525,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1963:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 8526,
                        "nodeType": "ArrayTypeName",
                        "src": "1963:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    null
                  ],
                  "id": 8535,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 8532,
                            "name": "who",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8435,
                            "src": "2010:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 8531,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2002:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 8530,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2002:7:10",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 8533,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2002:12:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 8528,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8407,
                        "src": "1990:2:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$13464",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 8529,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1993:8:10",
                      "memberName": "accesses",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12323,
                      "src": "1990:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                        "typeString": "function (address) external returns (bytes32[] memory,bytes32[] memory)"
                      }
                    },
                    "id": 8534,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1990:25:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                      "typeString": "tuple(bytes32[] memory,bytes32[] memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1962:53:10"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8539,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 8536,
                        "name": "reads",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8527,
                        "src": "2029:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 8537,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2035:6:10",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "2029:12:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "31",
                      "id": 8538,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2045:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "2029:17:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 8641,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "id": 8638,
                          "name": "reads",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8527,
                          "src": "2786:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                            "typeString": "bytes32[] memory"
                          }
                        },
                        "id": 8639,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2792:6:10",
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "src": "2786:12:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "hexValue": "31",
                        "id": 8640,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2801:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "2786:16:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "id": 8816,
                      "nodeType": "Block",
                      "src": "3986:99:10",
                      "statements": [
                        {
                          "expression": {
                            "arguments": [
                              {
                                "hexValue": "73746453746f726167652066696e642853746453746f72616765293a204e6f2073746f726167652075736520646574656374656420666f72207461726765742e",
                                "id": 8813,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4007:66:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_328ff448bebe6b9a52a670e66989b0a23c94fd0cbd86c30e5432c6ddc5340283",
                                  "typeString": "literal_string \"stdStorage find(StdStorage): No storage use detected for target.\""
                                },
                                "value": "stdStorage find(StdStorage): No storage use detected for target."
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_328ff448bebe6b9a52a670e66989b0a23c94fd0cbd86c30e5432c6ddc5340283",
                                  "typeString": "literal_string \"stdStorage find(StdStorage): No storage use detected for target.\""
                                }
                              ],
                              "id": 8812,
                              "name": "revert",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                -19,
                                -19
                              ],
                              "referencedDeclaration": -19,
                              "src": "4000:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                "typeString": "function (string memory) pure"
                              }
                            },
                            "id": 8814,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4000:74:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 8815,
                          "nodeType": "ExpressionStatement",
                          "src": "4000:74:10"
                        }
                      ]
                    },
                    "id": 8817,
                    "nodeType": "IfStatement",
                    "src": "2782:1303:10",
                    "trueBody": {
                      "id": 8811,
                      "nodeType": "Block",
                      "src": "2804:1176:10",
                      "statements": [
                        {
                          "body": {
                            "id": 8809,
                            "nodeType": "Block",
                            "src": "2861:1109:10",
                            "statements": [
                              {
                                "assignments": [
                                  8654
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 8654,
                                    "mutability": "mutable",
                                    "name": "prev",
                                    "nameLocation": "2887:4:10",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8809,
                                    "src": "2879:12:10",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    "typeName": {
                                      "id": 8653,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2879:7:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 8662,
                                "initialValue": {
                                  "arguments": [
                                    {
                                      "id": 8657,
                                      "name": "who",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8435,
                                      "src": "2902:3:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "baseExpression": {
                                        "id": 8658,
                                        "name": "reads",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8527,
                                        "src": "2907:5:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                          "typeString": "bytes32[] memory"
                                        }
                                      },
                                      "id": 8660,
                                      "indexExpression": {
                                        "id": 8659,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8643,
                                        "src": "2913:1:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2907:8:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "expression": {
                                      "id": 8655,
                                      "name": "vm",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8407,
                                      "src": "2894:2:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Vm_$13464",
                                        "typeString": "contract Vm"
                                      }
                                    },
                                    "id": 8656,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "2897:4:10",
                                    "memberName": "load",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 11994,
                                    "src": "2894:7:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_bytes32_$",
                                      "typeString": "function (address,bytes32) view external returns (bytes32)"
                                    }
                                  },
                                  "id": 8661,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2894:22:10",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "2879:37:10"
                              },
                              {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "id": 8668,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 8663,
                                    "name": "prev",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8654,
                                    "src": "2938:4:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 8666,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2954:1:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 8665,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2946:7:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes32_$",
                                        "typeString": "type(bytes32)"
                                      },
                                      "typeName": {
                                        "id": 8664,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2946:7:10",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 8667,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2946:10:10",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "src": "2938:18:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 8680,
                                "nodeType": "IfStatement",
                                "src": "2934:114:10",
                                "trueBody": {
                                  "id": 8679,
                                  "nodeType": "Block",
                                  "src": "2958:90:10",
                                  "statements": [
                                    {
                                      "eventCall": {
                                        "arguments": [
                                          {
                                            "id": 8670,
                                            "name": "who",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8435,
                                            "src": "3006:3:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "baseExpression": {
                                                  "id": 8673,
                                                  "name": "reads",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8527,
                                                  "src": "3019:5:10",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                    "typeString": "bytes32[] memory"
                                                  }
                                                },
                                                "id": 8675,
                                                "indexExpression": {
                                                  "id": 8674,
                                                  "name": "i",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8643,
                                                  "src": "3025:1:10",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "3019:8:10",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              ],
                                              "id": 8672,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "3011:7:10",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 8671,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "3011:7:10",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 8676,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3011:17:10",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 8669,
                                          "name": "WARNING_UninitedSlot",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8390,
                                          "src": "2985:20:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                            "typeString": "function (address,uint256)"
                                          }
                                        },
                                        "id": 8677,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2985:44:10",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 8678,
                                      "nodeType": "EmitStatement",
                                      "src": "2980:49:10"
                                    }
                                  ]
                                }
                              },
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 8684,
                                      "name": "who",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8435,
                                      "src": "3099:3:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "baseExpression": {
                                        "id": 8685,
                                        "name": "reads",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8527,
                                        "src": "3104:5:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                          "typeString": "bytes32[] memory"
                                        }
                                      },
                                      "id": 8687,
                                      "indexExpression": {
                                        "id": 8686,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8643,
                                        "src": "3110:1:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "3104:8:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "hexValue": "1337",
                                          "id": 8690,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "hexString",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3122:9:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_2636a8beb2c41b8ccafa9a55a5a5e333892a83b491df3a67d2768946a9f9c6dc",
                                            "typeString": "literal_string hex\"1337\""
                                          },
                                          "value": "\u00137"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_stringliteral_2636a8beb2c41b8ccafa9a55a5a5e333892a83b491df3a67d2768946a9f9c6dc",
                                            "typeString": "literal_string hex\"1337\""
                                          }
                                        ],
                                        "id": 8689,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "3114:7:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes32_$",
                                          "typeString": "type(bytes32)"
                                        },
                                        "typeName": {
                                          "id": 8688,
                                          "name": "bytes32",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "3114:7:10",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 8691,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3114:18:10",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "expression": {
                                      "id": 8681,
                                      "name": "vm",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8407,
                                      "src": "3090:2:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Vm_$13464",
                                        "typeString": "contract Vm"
                                      }
                                    },
                                    "id": 8683,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "3093:5:10",
                                    "memberName": "store",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 13038,
                                    "src": "3090:8:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$returns$__$",
                                      "typeString": "function (address,bytes32,bytes32) external"
                                    }
                                  },
                                  "id": 8692,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3090:43:10",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 8693,
                                "nodeType": "ExpressionStatement",
                                "src": "3090:43:10"
                              },
                              {
                                "assignments": [
                                  8695
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 8695,
                                    "mutability": "mutable",
                                    "name": "success",
                                    "nameLocation": "3156:7:10",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8809,
                                    "src": "3151:12:10",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "typeName": {
                                      "id": 8694,
                                      "name": "bool",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3151:4:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 8696,
                                "nodeType": "VariableDeclarationStatement",
                                "src": "3151:12:10"
                              },
                              {
                                "assignments": [
                                  8698
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 8698,
                                    "mutability": "mutable",
                                    "name": "rdat",
                                    "nameLocation": "3194:4:10",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8809,
                                    "src": "3181:17:10",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes"
                                    },
                                    "typeName": {
                                      "id": 8697,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3181:5:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_storage_ptr",
                                        "typeString": "bytes"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 8699,
                                "nodeType": "VariableDeclarationStatement",
                                "src": "3181:17:10"
                              },
                              {
                                "id": 8718,
                                "nodeType": "Block",
                                "src": "3216:146:10",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 8707,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "components": [
                                          {
                                            "id": 8700,
                                            "name": "success",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8695,
                                            "src": "3239:7:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          {
                                            "id": 8701,
                                            "name": "rdat",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8698,
                                            "src": "3248:4:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "id": 8702,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "TupleExpression",
                                        "src": "3238:15:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                          "typeString": "tuple(bool,bytes memory)"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "id": 8705,
                                            "name": "cald",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8489,
                                            "src": "3271:4:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "expression": {
                                            "id": 8703,
                                            "name": "who",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8435,
                                            "src": "3256:3:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "id": 8704,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "3260:10:10",
                                          "memberName": "staticcall",
                                          "nodeType": "MemberAccess",
                                          "src": "3256:14:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                            "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                                          }
                                        },
                                        "id": 8706,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3256:20:10",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                          "typeString": "tuple(bool,bytes memory)"
                                        }
                                      },
                                      "src": "3238:38:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 8708,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3238:38:10"
                                  },
                                  {
                                    "expression": {
                                      "id": 8716,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 8709,
                                        "name": "fdat",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8504,
                                        "src": "3298:4:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "id": 8711,
                                            "name": "rdat",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8698,
                                            "src": "3320:4:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          },
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 8714,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "hexValue": "3332",
                                              "id": 8712,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "3326:2:10",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_32_by_1",
                                                "typeString": "int_const 32"
                                              },
                                              "value": "32"
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "*",
                                            "rightExpression": {
                                              "id": 8713,
                                              "name": "field_depth",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8445,
                                              "src": "3331:11:10",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "3326:16:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 8710,
                                          "name": "bytesToBytes32",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9224,
                                          "src": "3305:14:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 8715,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3305:38:10",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "3298:45:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 8717,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3298:45:10"
                                  }
                                ]
                              },
                              {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 8726,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 8719,
                                    "name": "success",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8695,
                                    "src": "3384:7:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&&",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    "id": 8725,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 8720,
                                      "name": "fdat",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8504,
                                      "src": "3395:4:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "1337",
                                          "id": 8723,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "hexString",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3411:9:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_2636a8beb2c41b8ccafa9a55a5a5e333892a83b491df3a67d2768946a9f9c6dc",
                                            "typeString": "literal_string hex\"1337\""
                                          },
                                          "value": "\u00137"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_stringliteral_2636a8beb2c41b8ccafa9a55a5a5e333892a83b491df3a67d2768946a9f9c6dc",
                                            "typeString": "literal_string hex\"1337\""
                                          }
                                        ],
                                        "id": 8722,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "3403:7:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes32_$",
                                          "typeString": "type(bytes32)"
                                        },
                                        "typeName": {
                                          "id": 8721,
                                          "name": "bytes32",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "3403:7:10",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 8724,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3403:18:10",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "src": "3395:26:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "3384:37:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 8798,
                                "nodeType": "IfStatement",
                                "src": "3380:529:10",
                                "trueBody": {
                                  "id": 8797,
                                  "nodeType": "Block",
                                  "src": "3423:486:10",
                                  "statements": [
                                    {
                                      "eventCall": {
                                        "arguments": [
                                          {
                                            "id": 8728,
                                            "name": "who",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8435,
                                            "src": "3529:3:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 8729,
                                            "name": "fsig",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8440,
                                            "src": "3534:4:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "id": 8733,
                                                    "name": "ins",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8453,
                                                    "src": "3567:3:10",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                      "typeString": "bytes32[] memory"
                                                    }
                                                  },
                                                  {
                                                    "id": 8734,
                                                    "name": "field_depth",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8445,
                                                    "src": "3572:11:10",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                      "typeString": "bytes32[] memory"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "id": 8731,
                                                    "name": "abi",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -1,
                                                    "src": "3550:3:10",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_magic_abi",
                                                      "typeString": "abi"
                                                    }
                                                  },
                                                  "id": 8732,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "memberLocation": "3554:12:10",
                                                  "memberName": "encodePacked",
                                                  "nodeType": "MemberAccess",
                                                  "src": "3550:16:10",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                    "typeString": "function () pure returns (bytes memory)"
                                                  }
                                                },
                                                "id": 8735,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "3550:34:10",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              ],
                                              "id": 8730,
                                              "name": "keccak256",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -8,
                                              "src": "3540:9:10",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                "typeString": "function (bytes memory) pure returns (bytes32)"
                                              }
                                            },
                                            "id": 8736,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3540:45:10",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "baseExpression": {
                                                  "id": 8739,
                                                  "name": "reads",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8527,
                                                  "src": "3595:5:10",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                    "typeString": "bytes32[] memory"
                                                  }
                                                },
                                                "id": 8741,
                                                "indexExpression": {
                                                  "id": 8740,
                                                  "name": "i",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8643,
                                                  "src": "3601:1:10",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "3595:8:10",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              ],
                                              "id": 8738,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "3587:7:10",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 8737,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "3587:7:10",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 8742,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3587:17:10",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 8727,
                                          "name": "SlotFound",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8384,
                                          "src": "3519:9:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes4_$_t_bytes32_$_t_uint256_$returns$__$",
                                            "typeString": "function (address,bytes4,bytes32,uint256)"
                                          }
                                        },
                                        "id": 8743,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3519:86:10",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 8744,
                                      "nodeType": "EmitStatement",
                                      "src": "3514:91:10"
                                    },
                                    {
                                      "expression": {
                                        "id": 8766,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "baseExpression": {
                                            "baseExpression": {
                                              "baseExpression": {
                                                "expression": {
                                                  "id": 8745,
                                                  "name": "self",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8429,
                                                  "src": "3627:4:10",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                                                    "typeString": "struct StdStorage storage pointer"
                                                  }
                                                },
                                                "id": 8756,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "3632:5:10",
                                                "memberName": "slots",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 8354,
                                                "src": "3627:10:10",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_uint256_$_$_$",
                                                  "typeString": "mapping(address => mapping(bytes4 => mapping(bytes32 => uint256)))"
                                                }
                                              },
                                              "id": 8757,
                                              "indexExpression": {
                                                "id": 8747,
                                                "name": "who",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8435,
                                                "src": "3638:3:10",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "3627:15:10",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_uint256_$_$",
                                                "typeString": "mapping(bytes4 => mapping(bytes32 => uint256))"
                                              }
                                            },
                                            "id": 8758,
                                            "indexExpression": {
                                              "id": 8748,
                                              "name": "fsig",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8440,
                                              "src": "3643:4:10",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes4",
                                                "typeString": "bytes4"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "3627:21:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                              "typeString": "mapping(bytes32 => uint256)"
                                            }
                                          },
                                          "id": 8759,
                                          "indexExpression": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "id": 8752,
                                                    "name": "ins",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8453,
                                                    "src": "3676:3:10",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                      "typeString": "bytes32[] memory"
                                                    }
                                                  },
                                                  {
                                                    "id": 8753,
                                                    "name": "field_depth",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8445,
                                                    "src": "3681:11:10",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                      "typeString": "bytes32[] memory"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "id": 8750,
                                                    "name": "abi",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -1,
                                                    "src": "3659:3:10",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_magic_abi",
                                                      "typeString": "abi"
                                                    }
                                                  },
                                                  "id": 8751,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "memberLocation": "3663:12:10",
                                                  "memberName": "encodePacked",
                                                  "nodeType": "MemberAccess",
                                                  "src": "3659:16:10",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                    "typeString": "function () pure returns (bytes memory)"
                                                  }
                                                },
                                                "id": 8754,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "3659:34:10",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              ],
                                              "id": 8749,
                                              "name": "keccak256",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -8,
                                              "src": "3649:9:10",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                "typeString": "function (bytes memory) pure returns (bytes32)"
                                              }
                                            },
                                            "id": 8755,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3649:45:10",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "nodeType": "IndexAccess",
                                          "src": "3627:68:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "arguments": [
                                            {
                                              "baseExpression": {
                                                "id": 8762,
                                                "name": "reads",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8527,
                                                "src": "3706:5:10",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                  "typeString": "bytes32[] memory"
                                                }
                                              },
                                              "id": 8764,
                                              "indexExpression": {
                                                "id": 8763,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8643,
                                                "src": "3712:1:10",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "3706:8:10",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            ],
                                            "id": 8761,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "3698:7:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_uint256_$",
                                              "typeString": "type(uint256)"
                                            },
                                            "typeName": {
                                              "id": 8760,
                                              "name": "uint256",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "3698:7:10",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 8765,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "3698:17:10",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "3627:88:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 8767,
                                      "nodeType": "ExpressionStatement",
                                      "src": "3627:88:10"
                                    },
                                    {
                                      "expression": {
                                        "id": 8784,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "baseExpression": {
                                            "baseExpression": {
                                              "baseExpression": {
                                                "expression": {
                                                  "id": 8768,
                                                  "name": "self",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8429,
                                                  "src": "3737:4:10",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                                                    "typeString": "struct StdStorage storage pointer"
                                                  }
                                                },
                                                "id": 8779,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "3742:5:10",
                                                "memberName": "finds",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 8362,
                                                "src": "3737:10:10",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_bool_$_$_$",
                                                  "typeString": "mapping(address => mapping(bytes4 => mapping(bytes32 => bool)))"
                                                }
                                              },
                                              "id": 8780,
                                              "indexExpression": {
                                                "id": 8770,
                                                "name": "who",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8435,
                                                "src": "3748:3:10",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "3737:15:10",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_bool_$_$",
                                                "typeString": "mapping(bytes4 => mapping(bytes32 => bool))"
                                              }
                                            },
                                            "id": 8781,
                                            "indexExpression": {
                                              "id": 8771,
                                              "name": "fsig",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8440,
                                              "src": "3753:4:10",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes4",
                                                "typeString": "bytes4"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "3737:21:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                                              "typeString": "mapping(bytes32 => bool)"
                                            }
                                          },
                                          "id": 8782,
                                          "indexExpression": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "id": 8775,
                                                    "name": "ins",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8453,
                                                    "src": "3786:3:10",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                      "typeString": "bytes32[] memory"
                                                    }
                                                  },
                                                  {
                                                    "id": 8776,
                                                    "name": "field_depth",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8445,
                                                    "src": "3791:11:10",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                      "typeString": "bytes32[] memory"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "id": 8773,
                                                    "name": "abi",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -1,
                                                    "src": "3769:3:10",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_magic_abi",
                                                      "typeString": "abi"
                                                    }
                                                  },
                                                  "id": 8774,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "memberLocation": "3773:12:10",
                                                  "memberName": "encodePacked",
                                                  "nodeType": "MemberAccess",
                                                  "src": "3769:16:10",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                    "typeString": "function () pure returns (bytes memory)"
                                                  }
                                                },
                                                "id": 8777,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "3769:34:10",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              ],
                                              "id": 8772,
                                              "name": "keccak256",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -8,
                                              "src": "3759:9:10",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                "typeString": "function (bytes memory) pure returns (bytes32)"
                                              }
                                            },
                                            "id": 8778,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3759:45:10",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "nodeType": "IndexAccess",
                                          "src": "3737:68:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "hexValue": "74727565",
                                          "id": 8783,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "bool",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3808:4:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "value": "true"
                                        },
                                        "src": "3737:75:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "id": 8785,
                                      "nodeType": "ExpressionStatement",
                                      "src": "3737:75:10"
                                    },
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 8789,
                                            "name": "who",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8435,
                                            "src": "3843:3:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "baseExpression": {
                                              "id": 8790,
                                              "name": "reads",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8527,
                                              "src": "3848:5:10",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                "typeString": "bytes32[] memory"
                                              }
                                            },
                                            "id": 8792,
                                            "indexExpression": {
                                              "id": 8791,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8643,
                                              "src": "3854:1:10",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "3848:8:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          {
                                            "id": 8793,
                                            "name": "prev",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8654,
                                            "src": "3858:4:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          ],
                                          "expression": {
                                            "id": 8786,
                                            "name": "vm",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8407,
                                            "src": "3834:2:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_Vm_$13464",
                                              "typeString": "contract Vm"
                                            }
                                          },
                                          "id": 8788,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "3837:5:10",
                                          "memberName": "store",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 13038,
                                          "src": "3834:8:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$returns$__$",
                                            "typeString": "function (address,bytes32,bytes32) external"
                                          }
                                        },
                                        "id": 8794,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3834:29:10",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 8795,
                                      "nodeType": "ExpressionStatement",
                                      "src": "3834:29:10"
                                    },
                                    {
                                      "id": 8796,
                                      "nodeType": "Break",
                                      "src": "3885:5:10"
                                    }
                                  ]
                                }
                              },
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 8802,
                                      "name": "who",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8435,
                                      "src": "3935:3:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "baseExpression": {
                                        "id": 8803,
                                        "name": "reads",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8527,
                                        "src": "3940:5:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                          "typeString": "bytes32[] memory"
                                        }
                                      },
                                      "id": 8805,
                                      "indexExpression": {
                                        "id": 8804,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8643,
                                        "src": "3946:1:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "3940:8:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "id": 8806,
                                      "name": "prev",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8654,
                                      "src": "3950:4:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "expression": {
                                      "id": 8799,
                                      "name": "vm",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8407,
                                      "src": "3926:2:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Vm_$13464",
                                        "typeString": "contract Vm"
                                      }
                                    },
                                    "id": 8801,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "3929:5:10",
                                    "memberName": "store",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 13038,
                                    "src": "3926:8:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$returns$__$",
                                      "typeString": "function (address,bytes32,bytes32) external"
                                    }
                                  },
                                  "id": 8807,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3926:29:10",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 8808,
                                "nodeType": "ExpressionStatement",
                                "src": "3926:29:10"
                              }
                            ]
                          },
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8649,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 8646,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8643,
                              "src": "2838:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "expression": {
                                "id": 8647,
                                "name": "reads",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8527,
                                "src": "2842:5:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                  "typeString": "bytes32[] memory"
                                }
                              },
                              "id": 8648,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2848:6:10",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "2842:12:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2838:16:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 8810,
                          "initializationExpression": {
                            "assignments": [
                              8643
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 8643,
                                "mutability": "mutable",
                                "name": "i",
                                "nameLocation": "2831:1:10",
                                "nodeType": "VariableDeclaration",
                                "scope": 8810,
                                "src": "2823:9:10",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 8642,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2823:7:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 8645,
                            "initialValue": {
                              "hexValue": "30",
                              "id": 8644,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2835:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "2823:13:10"
                          },
                          "isSimpleCounterLoop": true,
                          "loopExpression": {
                            "expression": {
                              "id": 8651,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": false,
                              "src": "2856:3:10",
                              "subExpression": {
                                "id": 8650,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8643,
                                "src": "2856:1:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8652,
                            "nodeType": "ExpressionStatement",
                            "src": "2856:3:10"
                          },
                          "nodeType": "ForStatement",
                          "src": "2818:1152:10"
                        }
                      ]
                    }
                  },
                  "id": 8818,
                  "nodeType": "IfStatement",
                  "src": "2025:2060:10",
                  "trueBody": {
                    "id": 8637,
                    "nodeType": "Block",
                    "src": "2048:728:10",
                    "statements": [
                      {
                        "assignments": [
                          8541
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8541,
                            "mutability": "mutable",
                            "name": "curr",
                            "nameLocation": "2070:4:10",
                            "nodeType": "VariableDeclaration",
                            "scope": 8637,
                            "src": "2062:12:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 8540,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "2062:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8549,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 8544,
                              "name": "who",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8435,
                              "src": "2085:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 8545,
                                "name": "reads",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8527,
                                "src": "2090:5:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                  "typeString": "bytes32[] memory"
                                }
                              },
                              "id": 8547,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 8546,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2096:1:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2090:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "id": 8542,
                              "name": "vm",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8407,
                              "src": "2077:2:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Vm_$13464",
                                "typeString": "contract Vm"
                              }
                            },
                            "id": 8543,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2080:4:10",
                            "memberName": "load",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11994,
                            "src": "2077:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_bytes32_$",
                              "typeString": "function (address,bytes32) view external returns (bytes32)"
                            }
                          },
                          "id": 8548,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2077:22:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2062:37:10"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 8555,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8550,
                            "name": "curr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8541,
                            "src": "2117:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 8553,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2133:1:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 8552,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2125:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 8551,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "2125:7:10",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 8554,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2125:10:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "2117:18:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8567,
                        "nodeType": "IfStatement",
                        "src": "2113:106:10",
                        "trueBody": {
                          "id": 8566,
                          "nodeType": "Block",
                          "src": "2137:82:10",
                          "statements": [
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 8557,
                                    "name": "who",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8435,
                                    "src": "2181:3:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "baseExpression": {
                                          "id": 8560,
                                          "name": "reads",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8527,
                                          "src": "2194:5:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                            "typeString": "bytes32[] memory"
                                          }
                                        },
                                        "id": 8562,
                                        "indexExpression": {
                                          "hexValue": "30",
                                          "id": 8561,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2200:1:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "2194:8:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 8559,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2186:7:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 8558,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2186:7:10",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 8563,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2186:17:10",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8556,
                                  "name": "WARNING_UninitedSlot",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8390,
                                  "src": "2160:20:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256)"
                                  }
                                },
                                "id": 8564,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2160:44:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8565,
                              "nodeType": "EmitStatement",
                              "src": "2155:49:10"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 8570,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8568,
                            "name": "fdat",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8504,
                            "src": "2236:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 8569,
                            "name": "curr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8541,
                            "src": "2244:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "2236:12:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8577,
                        "nodeType": "IfStatement",
                        "src": "2232:238:10",
                        "trueBody": {
                          "id": 8576,
                          "nodeType": "Block",
                          "src": "2250:220:10",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "hexValue": "66616c7365",
                                    "id": 8572,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2297:5:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "false"
                                  },
                                  {
                                    "hexValue": "73746453746f726167652066696e642853746453746f72616765293a205061636b656420736c6f742e205468697320776f756c642063617573652064616e6765726f7573206f76657277726974696e6720616e642063757272656e746c792069736e277420737570706f727465642e",
                                    "id": 8573,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2324:113:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_4bfa78e02b745efea2b29d358f6dc28382f5209b1d2b2dbeb8ef0862e74440b3",
                                      "typeString": "literal_string \"stdStorage find(StdStorage): Packed slot. This would cause dangerous overwriting and currently isn't supported.\""
                                    },
                                    "value": "stdStorage find(StdStorage): Packed slot. This would cause dangerous overwriting and currently isn't supported."
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_4bfa78e02b745efea2b29d358f6dc28382f5209b1d2b2dbeb8ef0862e74440b3",
                                      "typeString": "literal_string \"stdStorage find(StdStorage): Packed slot. This would cause dangerous overwriting and currently isn't supported.\""
                                    }
                                  ],
                                  "id": 8571,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "2268:7:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 8574,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2268:187:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8575,
                              "nodeType": "ExpressionStatement",
                              "src": "2268:187:10"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 8579,
                              "name": "who",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8435,
                              "src": "2498:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8580,
                              "name": "fsig",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8440,
                              "src": "2503:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 8584,
                                      "name": "ins",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8453,
                                      "src": "2536:3:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                        "typeString": "bytes32[] memory"
                                      }
                                    },
                                    {
                                      "id": 8585,
                                      "name": "field_depth",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8445,
                                      "src": "2541:11:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                        "typeString": "bytes32[] memory"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 8582,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "2519:3:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 8583,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "2523:12:10",
                                    "memberName": "encodePacked",
                                    "nodeType": "MemberAccess",
                                    "src": "2519:16:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 8586,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2519:34:10",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 8581,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "2509:9:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 8587,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2509:45:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "baseExpression": {
                                    "id": 8590,
                                    "name": "reads",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8527,
                                    "src": "2564:5:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                      "typeString": "bytes32[] memory"
                                    }
                                  },
                                  "id": 8592,
                                  "indexExpression": {
                                    "hexValue": "30",
                                    "id": 8591,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2570:1:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2564:8:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 8589,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2556:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 8588,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2556:7:10",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 8593,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2556:17:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8578,
                            "name": "SlotFound",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8384,
                            "src": "2488:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes4_$_t_bytes32_$_t_uint256_$returns$__$",
                              "typeString": "function (address,bytes4,bytes32,uint256)"
                            }
                          },
                          "id": 8594,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2488:86:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8595,
                        "nodeType": "EmitStatement",
                        "src": "2483:91:10"
                      },
                      {
                        "expression": {
                          "id": 8617,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "baseExpression": {
                                  "expression": {
                                    "id": 8596,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8429,
                                    "src": "2588:4:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                                      "typeString": "struct StdStorage storage pointer"
                                    }
                                  },
                                  "id": 8607,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "2593:5:10",
                                  "memberName": "slots",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 8354,
                                  "src": "2588:10:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_uint256_$_$_$",
                                    "typeString": "mapping(address => mapping(bytes4 => mapping(bytes32 => uint256)))"
                                  }
                                },
                                "id": 8608,
                                "indexExpression": {
                                  "id": 8598,
                                  "name": "who",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8435,
                                  "src": "2599:3:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2588:15:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_uint256_$_$",
                                  "typeString": "mapping(bytes4 => mapping(bytes32 => uint256))"
                                }
                              },
                              "id": 8609,
                              "indexExpression": {
                                "id": 8599,
                                "name": "fsig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8440,
                                "src": "2604:4:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2588:21:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 8610,
                            "indexExpression": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 8603,
                                      "name": "ins",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8453,
                                      "src": "2637:3:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                        "typeString": "bytes32[] memory"
                                      }
                                    },
                                    {
                                      "id": 8604,
                                      "name": "field_depth",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8445,
                                      "src": "2642:11:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                        "typeString": "bytes32[] memory"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 8601,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "2620:3:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 8602,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "2624:12:10",
                                    "memberName": "encodePacked",
                                    "nodeType": "MemberAccess",
                                    "src": "2620:16:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 8605,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2620:34:10",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 8600,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "2610:9:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 8606,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2610:45:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2588:68:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "baseExpression": {
                                  "id": 8613,
                                  "name": "reads",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8527,
                                  "src": "2667:5:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                    "typeString": "bytes32[] memory"
                                  }
                                },
                                "id": 8615,
                                "indexExpression": {
                                  "hexValue": "30",
                                  "id": 8614,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2673:1:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2667:8:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 8612,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2659:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 8611,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2659:7:10",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 8616,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2659:17:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2588:88:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8618,
                        "nodeType": "ExpressionStatement",
                        "src": "2588:88:10"
                      },
                      {
                        "expression": {
                          "id": 8635,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "baseExpression": {
                                  "expression": {
                                    "id": 8619,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8429,
                                    "src": "2690:4:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                                      "typeString": "struct StdStorage storage pointer"
                                    }
                                  },
                                  "id": 8630,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "2695:5:10",
                                  "memberName": "finds",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 8362,
                                  "src": "2690:10:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_bool_$_$_$",
                                    "typeString": "mapping(address => mapping(bytes4 => mapping(bytes32 => bool)))"
                                  }
                                },
                                "id": 8631,
                                "indexExpression": {
                                  "id": 8621,
                                  "name": "who",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8435,
                                  "src": "2701:3:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2690:15:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_bool_$_$",
                                  "typeString": "mapping(bytes4 => mapping(bytes32 => bool))"
                                }
                              },
                              "id": 8632,
                              "indexExpression": {
                                "id": 8622,
                                "name": "fsig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8440,
                                "src": "2706:4:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2690:21:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                                "typeString": "mapping(bytes32 => bool)"
                              }
                            },
                            "id": 8633,
                            "indexExpression": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 8626,
                                      "name": "ins",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8453,
                                      "src": "2739:3:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                        "typeString": "bytes32[] memory"
                                      }
                                    },
                                    {
                                      "id": 8627,
                                      "name": "field_depth",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8445,
                                      "src": "2744:11:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                        "typeString": "bytes32[] memory"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 8624,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "2722:3:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 8625,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "2726:12:10",
                                    "memberName": "encodePacked",
                                    "nodeType": "MemberAccess",
                                    "src": "2722:16:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 8628,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2722:34:10",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 8623,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "2712:9:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 8629,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2712:45:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2690:68:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 8634,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2761:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "2690:75:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8636,
                        "nodeType": "ExpressionStatement",
                        "src": "2690:75:10"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "baseExpression": {
                          "baseExpression": {
                            "baseExpression": {
                              "expression": {
                                "id": 8820,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8429,
                                "src": "4116:4:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                                  "typeString": "struct StdStorage storage pointer"
                                }
                              },
                              "id": 8821,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4121:5:10",
                              "memberName": "finds",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8362,
                              "src": "4116:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_bool_$_$_$",
                                "typeString": "mapping(address => mapping(bytes4 => mapping(bytes32 => bool)))"
                              }
                            },
                            "id": 8823,
                            "indexExpression": {
                              "id": 8822,
                              "name": "who",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8435,
                              "src": "4127:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4116:15:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_bool_$_$",
                              "typeString": "mapping(bytes4 => mapping(bytes32 => bool))"
                            }
                          },
                          "id": 8825,
                          "indexExpression": {
                            "id": 8824,
                            "name": "fsig",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8440,
                            "src": "4132:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4116:21:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                            "typeString": "mapping(bytes32 => bool)"
                          }
                        },
                        "id": 8833,
                        "indexExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 8829,
                                  "name": "ins",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8453,
                                  "src": "4165:3:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                    "typeString": "bytes32[] memory"
                                  }
                                },
                                {
                                  "id": 8830,
                                  "name": "field_depth",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8445,
                                  "src": "4170:11:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                    "typeString": "bytes32[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 8827,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "4148:3:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 8828,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "4152:12:10",
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "4148:16:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 8831,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4148:34:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 8826,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "4138:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 8832,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4138:45:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4116:68:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "73746453746f726167652066696e642853746453746f72616765293a20536c6f74287329206e6f7420666f756e642e",
                        "id": 8834,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4198:49:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_47c274d4780c7bff83310cd576005a97888a2b2935c22f84e1e5282c1bfb39a8",
                          "typeString": "literal_string \"stdStorage find(StdStorage): Slot(s) not found.\""
                        },
                        "value": "stdStorage find(StdStorage): Slot(s) not found."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_47c274d4780c7bff83310cd576005a97888a2b2935c22f84e1e5282c1bfb39a8",
                          "typeString": "literal_string \"stdStorage find(StdStorage): Slot(s) not found.\""
                        }
                      ],
                      "id": 8819,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4095:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 8835,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4095:162:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8836,
                  "nodeType": "ExpressionStatement",
                  "src": "4095:162:10"
                },
                {
                  "expression": {
                    "id": 8839,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "4268:19:10",
                    "subExpression": {
                      "expression": {
                        "id": 8837,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8429,
                        "src": "4275:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      "id": 8838,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "4280:7:10",
                      "memberName": "_target",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8371,
                      "src": "4275:12:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8840,
                  "nodeType": "ExpressionStatement",
                  "src": "4268:19:10"
                },
                {
                  "expression": {
                    "id": 8843,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "4297:16:10",
                    "subExpression": {
                      "expression": {
                        "id": 8841,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8429,
                        "src": "4304:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      "id": 8842,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "4309:4:10",
                      "memberName": "_sig",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8367,
                      "src": "4304:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8844,
                  "nodeType": "ExpressionStatement",
                  "src": "4297:16:10"
                },
                {
                  "expression": {
                    "id": 8847,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "4323:17:10",
                    "subExpression": {
                      "expression": {
                        "id": 8845,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8429,
                        "src": "4330:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      "id": 8846,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "4335:5:10",
                      "memberName": "_keys",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8365,
                      "src": "4330:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                        "typeString": "bytes32[] storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8848,
                  "nodeType": "ExpressionStatement",
                  "src": "4323:17:10"
                },
                {
                  "expression": {
                    "id": 8851,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "4350:18:10",
                    "subExpression": {
                      "expression": {
                        "id": 8849,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8429,
                        "src": "4357:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      "id": 8850,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "4362:6:10",
                      "memberName": "_depth",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8369,
                      "src": "4357:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8852,
                  "nodeType": "ExpressionStatement",
                  "src": "4350:18:10"
                },
                {
                  "expression": {
                    "baseExpression": {
                      "baseExpression": {
                        "baseExpression": {
                          "expression": {
                            "id": 8853,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8429,
                            "src": "4386:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                              "typeString": "struct StdStorage storage pointer"
                            }
                          },
                          "id": 8854,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "4391:5:10",
                          "memberName": "slots",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8354,
                          "src": "4386:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_uint256_$_$_$",
                            "typeString": "mapping(address => mapping(bytes4 => mapping(bytes32 => uint256)))"
                          }
                        },
                        "id": 8856,
                        "indexExpression": {
                          "id": 8855,
                          "name": "who",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8435,
                          "src": "4397:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4386:15:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_uint256_$_$",
                          "typeString": "mapping(bytes4 => mapping(bytes32 => uint256))"
                        }
                      },
                      "id": 8858,
                      "indexExpression": {
                        "id": 8857,
                        "name": "fsig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8440,
                        "src": "4402:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "4386:21:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 8866,
                    "indexExpression": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "id": 8862,
                              "name": "ins",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8453,
                              "src": "4435:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            {
                              "id": 8863,
                              "name": "field_depth",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8445,
                              "src": "4440:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 8860,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "4418:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 8861,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "4422:12:10",
                            "memberName": "encodePacked",
                            "nodeType": "MemberAccess",
                            "src": "4418:16:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 8864,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4418:34:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 8859,
                        "name": "keccak256",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -8,
                        "src": "4408:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (bytes memory) pure returns (bytes32)"
                        }
                      },
                      "id": 8865,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4408:45:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4386:68:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 8433,
                  "id": 8867,
                  "nodeType": "Return",
                  "src": "4379:75:10"
                }
              ]
            },
            "documentation": {
              "id": 8426,
              "nodeType": "StructuredDocumentation",
              "src": "756:129:10",
              "text": "@notice find an arbitrary storage slot given a function sig, input data, address of the contract and a value to check against"
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "find",
            "nameLocation": "1273:4:10",
            "parameters": {
              "id": 8430,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8429,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "1297:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 8869,
                  "src": "1278:23:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 8428,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 8427,
                      "name": "StdStorage",
                      "nameLocations": [
                        "1278:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "1278:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "1278:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1277:25:10"
            },
            "returnParameters": {
              "id": 8433,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8432,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 8869,
                  "src": "1321:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8431,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1321:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1320:9:10"
            },
            "scope": 9266,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 8889,
            "nodeType": "FunctionDefinition",
            "src": "4467:156:10",
            "nodes": [],
            "body": {
              "id": 8888,
              "nodeType": "Block",
              "src": "4563:60:10",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 8884,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 8880,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8872,
                        "src": "4573:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      "id": 8882,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "4578:7:10",
                      "memberName": "_target",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8371,
                      "src": "4573:12:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 8883,
                      "name": "_target",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8874,
                      "src": "4588:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "4573:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 8885,
                  "nodeType": "ExpressionStatement",
                  "src": "4573:22:10"
                },
                {
                  "expression": {
                    "id": 8886,
                    "name": "self",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8872,
                    "src": "4612:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage storage pointer"
                    }
                  },
                  "functionReturnParameters": 8879,
                  "id": 8887,
                  "nodeType": "Return",
                  "src": "4605:11:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "target",
            "nameLocation": "4476:6:10",
            "parameters": {
              "id": 8875,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8872,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "4502:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 8889,
                  "src": "4483:23:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 8871,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 8870,
                      "name": "StdStorage",
                      "nameLocations": [
                        "4483:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "4483:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "4483:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8874,
                  "mutability": "mutable",
                  "name": "_target",
                  "nameLocation": "4516:7:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 8889,
                  "src": "4508:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8873,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4508:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4482:42:10"
            },
            "returnParameters": {
              "id": 8879,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8878,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 8889,
                  "src": "4543:18:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 8877,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 8876,
                      "name": "StdStorage",
                      "nameLocations": [
                        "4543:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "4543:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "4543:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4542:20:10"
            },
            "scope": 9266,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 8909,
            "nodeType": "FunctionDefinition",
            "src": "4629:143:10",
            "nodes": [],
            "body": {
              "id": 8908,
              "nodeType": "Block",
              "src": "4718:54:10",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 8904,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 8900,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8892,
                        "src": "4728:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      "id": 8902,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "4733:4:10",
                      "memberName": "_sig",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8367,
                      "src": "4728:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 8903,
                      "name": "_sig",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8894,
                      "src": "4740:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "src": "4728:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "id": 8905,
                  "nodeType": "ExpressionStatement",
                  "src": "4728:16:10"
                },
                {
                  "expression": {
                    "id": 8906,
                    "name": "self",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8892,
                    "src": "4761:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage storage pointer"
                    }
                  },
                  "functionReturnParameters": 8899,
                  "id": 8907,
                  "nodeType": "Return",
                  "src": "4754:11:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "sig",
            "nameLocation": "4638:3:10",
            "parameters": {
              "id": 8895,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8892,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "4661:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 8909,
                  "src": "4642:23:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 8891,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 8890,
                      "name": "StdStorage",
                      "nameLocations": [
                        "4642:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "4642:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "4642:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8894,
                  "mutability": "mutable",
                  "name": "_sig",
                  "nameLocation": "4674:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 8909,
                  "src": "4667:11:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 8893,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "4667:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4641:38:10"
            },
            "returnParameters": {
              "id": 8899,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8898,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 8909,
                  "src": "4698:18:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 8897,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 8896,
                      "name": "StdStorage",
                      "nameLocations": [
                        "4698:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "4698:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "4698:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4697:20:10"
            },
            "scope": 9266,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 8931,
            "nodeType": "FunctionDefinition",
            "src": "4778:156:10",
            "nodes": [],
            "body": {
              "id": 8930,
              "nodeType": "Block",
              "src": "4874:60:10",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 8926,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 8920,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8912,
                        "src": "4884:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      "id": 8922,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "4889:4:10",
                      "memberName": "_sig",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8367,
                      "src": "4884:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 8924,
                          "name": "_sig",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8914,
                          "src": "4901:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        ],
                        "id": 8923,
                        "name": "sigs",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8425,
                        "src": "4896:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes4_$",
                          "typeString": "function (string memory) pure returns (bytes4)"
                        }
                      },
                      "id": 8925,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4896:10:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "src": "4884:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "id": 8927,
                  "nodeType": "ExpressionStatement",
                  "src": "4884:22:10"
                },
                {
                  "expression": {
                    "id": 8928,
                    "name": "self",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8912,
                    "src": "4923:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage storage pointer"
                    }
                  },
                  "functionReturnParameters": 8919,
                  "id": 8929,
                  "nodeType": "Return",
                  "src": "4916:11:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "sig",
            "nameLocation": "4787:3:10",
            "parameters": {
              "id": 8915,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8912,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "4810:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 8931,
                  "src": "4791:23:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 8911,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 8910,
                      "name": "StdStorage",
                      "nameLocations": [
                        "4791:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "4791:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "4791:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8914,
                  "mutability": "mutable",
                  "name": "_sig",
                  "nameLocation": "4830:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 8931,
                  "src": "4816:18:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8913,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4816:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4790:45:10"
            },
            "returnParameters": {
              "id": 8919,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8918,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 8931,
                  "src": "4854:18:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 8917,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 8916,
                      "name": "StdStorage",
                      "nameLocations": [
                        "4854:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "4854:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "4854:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4853:20:10"
            },
            "scope": 9266,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 8962,
            "nodeType": "FunctionDefinition",
            "src": "4940:179:10",
            "nodes": [],
            "body": {
              "id": 8961,
              "nodeType": "Block",
              "src": "5034:85:10",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 8953,
                                    "name": "who",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8936,
                                    "src": "5084:3:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 8952,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5076:7:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 8951,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5076:7:10",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 8954,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5076:12:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 8950,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5068:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 8949,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "5068:7:10",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 8955,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5068:21:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8948,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5060:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 8947,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "5060:7:10",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 8956,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5060:30:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "expression": {
                          "id": 8942,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8934,
                          "src": "5044:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                            "typeString": "struct StdStorage storage pointer"
                          }
                        },
                        "id": 8945,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "5049:5:10",
                        "memberName": "_keys",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 8365,
                        "src": "5044:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        }
                      },
                      "id": 8946,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5055:4:10",
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "src": "5044:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_bytes32_$returns$__$attached_to$_t_array$_t_bytes32_$dyn_storage_ptr_$",
                        "typeString": "function (bytes32[] storage pointer,bytes32)"
                      }
                    },
                    "id": 8957,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5044:47:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8958,
                  "nodeType": "ExpressionStatement",
                  "src": "5044:47:10"
                },
                {
                  "expression": {
                    "id": 8959,
                    "name": "self",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8934,
                    "src": "5108:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage storage pointer"
                    }
                  },
                  "functionReturnParameters": 8941,
                  "id": 8960,
                  "nodeType": "Return",
                  "src": "5101:11:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "with_key",
            "nameLocation": "4949:8:10",
            "parameters": {
              "id": 8937,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8934,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "4977:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 8962,
                  "src": "4958:23:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 8933,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 8932,
                      "name": "StdStorage",
                      "nameLocations": [
                        "4958:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "4958:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "4958:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8936,
                  "mutability": "mutable",
                  "name": "who",
                  "nameLocation": "4991:3:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 8962,
                  "src": "4983:11:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8935,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4983:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4957:38:10"
            },
            "returnParameters": {
              "id": 8941,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8940,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 8962,
                  "src": "5014:18:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 8939,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 8938,
                      "name": "StdStorage",
                      "nameLocations": [
                        "5014:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "5014:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "5014:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5013:20:10"
            },
            "scope": 9266,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 8987,
            "nodeType": "FunctionDefinition",
            "src": "5125:161:10",
            "nodes": [],
            "body": {
              "id": 8986,
              "nodeType": "Block",
              "src": "5219:67:10",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 8980,
                            "name": "amt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8967,
                            "src": "5253:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8979,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5245:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 8978,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "5245:7:10",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 8981,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5245:12:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "expression": {
                          "id": 8973,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8965,
                          "src": "5229:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                            "typeString": "struct StdStorage storage pointer"
                          }
                        },
                        "id": 8976,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "5234:5:10",
                        "memberName": "_keys",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 8365,
                        "src": "5229:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        }
                      },
                      "id": 8977,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5240:4:10",
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "src": "5229:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_bytes32_$returns$__$attached_to$_t_array$_t_bytes32_$dyn_storage_ptr_$",
                        "typeString": "function (bytes32[] storage pointer,bytes32)"
                      }
                    },
                    "id": 8982,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5229:29:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8983,
                  "nodeType": "ExpressionStatement",
                  "src": "5229:29:10"
                },
                {
                  "expression": {
                    "id": 8984,
                    "name": "self",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8965,
                    "src": "5275:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage storage pointer"
                    }
                  },
                  "functionReturnParameters": 8972,
                  "id": 8985,
                  "nodeType": "Return",
                  "src": "5268:11:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "with_key",
            "nameLocation": "5134:8:10",
            "parameters": {
              "id": 8968,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8965,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "5162:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 8987,
                  "src": "5143:23:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 8964,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 8963,
                      "name": "StdStorage",
                      "nameLocations": [
                        "5143:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "5143:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "5143:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8967,
                  "mutability": "mutable",
                  "name": "amt",
                  "nameLocation": "5176:3:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 8987,
                  "src": "5168:11:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8966,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5168:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5142:38:10"
            },
            "returnParameters": {
              "id": 8972,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8971,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 8987,
                  "src": "5199:18:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 8970,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 8969,
                      "name": "StdStorage",
                      "nameLocations": [
                        "5199:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "5199:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "5199:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5198:20:10"
            },
            "scope": 9266,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 9009,
            "nodeType": "FunctionDefinition",
            "src": "5292:152:10",
            "nodes": [],
            "body": {
              "id": 9008,
              "nodeType": "Block",
              "src": "5386:58:10",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9003,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8992,
                        "src": "5412:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "expression": {
                          "id": 8998,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8990,
                          "src": "5396:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                            "typeString": "struct StdStorage storage pointer"
                          }
                        },
                        "id": 9001,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "5401:5:10",
                        "memberName": "_keys",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 8365,
                        "src": "5396:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        }
                      },
                      "id": 9002,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5407:4:10",
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "src": "5396:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_bytes32_$returns$__$attached_to$_t_array$_t_bytes32_$dyn_storage_ptr_$",
                        "typeString": "function (bytes32[] storage pointer,bytes32)"
                      }
                    },
                    "id": 9004,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5396:20:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9005,
                  "nodeType": "ExpressionStatement",
                  "src": "5396:20:10"
                },
                {
                  "expression": {
                    "id": 9006,
                    "name": "self",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8990,
                    "src": "5433:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage storage pointer"
                    }
                  },
                  "functionReturnParameters": 8997,
                  "id": 9007,
                  "nodeType": "Return",
                  "src": "5426:11:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "with_key",
            "nameLocation": "5301:8:10",
            "parameters": {
              "id": 8993,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8990,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "5329:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9009,
                  "src": "5310:23:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 8989,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 8988,
                      "name": "StdStorage",
                      "nameLocations": [
                        "5310:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "5310:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "5310:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8992,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "5343:3:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9009,
                  "src": "5335:11:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8991,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5335:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5309:38:10"
            },
            "returnParameters": {
              "id": 8997,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8996,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9009,
                  "src": "5366:18:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 8995,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 8994,
                      "name": "StdStorage",
                      "nameLocations": [
                        "5366:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "5366:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "5366:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5365:20:10"
            },
            "scope": 9266,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 9029,
            "nodeType": "FunctionDefinition",
            "src": "5450:152:10",
            "nodes": [],
            "body": {
              "id": 9028,
              "nodeType": "Block",
              "src": "5544:58:10",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 9024,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 9020,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9012,
                        "src": "5554:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      "id": 9022,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "5559:6:10",
                      "memberName": "_depth",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8369,
                      "src": "5554:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 9023,
                      "name": "_depth",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9014,
                      "src": "5568:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5554:20:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 9025,
                  "nodeType": "ExpressionStatement",
                  "src": "5554:20:10"
                },
                {
                  "expression": {
                    "id": 9026,
                    "name": "self",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9012,
                    "src": "5591:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage storage pointer"
                    }
                  },
                  "functionReturnParameters": 9019,
                  "id": 9027,
                  "nodeType": "Return",
                  "src": "5584:11:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "depth",
            "nameLocation": "5459:5:10",
            "parameters": {
              "id": 9015,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9012,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "5484:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9029,
                  "src": "5465:23:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9011,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9010,
                      "name": "StdStorage",
                      "nameLocations": [
                        "5465:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "5465:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "5465:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9014,
                  "mutability": "mutable",
                  "name": "_depth",
                  "nameLocation": "5498:6:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9029,
                  "src": "5490:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9013,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5490:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5464:41:10"
            },
            "returnParameters": {
              "id": 9019,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9018,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9029,
                  "src": "5524:18:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9017,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9016,
                      "name": "StdStorage",
                      "nameLocations": [
                        "5524:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "5524:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "5524:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5523:20:10"
            },
            "scope": 9266,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 9061,
            "nodeType": "FunctionDefinition",
            "src": "5608:194:10",
            "nodes": [],
            "body": {
              "id": 9060,
              "nodeType": "Block",
              "src": "5678:124:10",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    9038
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9038,
                      "mutability": "mutable",
                      "name": "t",
                      "nameLocation": "5696:1:10",
                      "nodeType": "VariableDeclaration",
                      "scope": 9060,
                      "src": "5688:9:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9037,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5688:7:10",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 9041,
                  "initialValue": {
                    "expression": {
                      "id": 9039,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9032,
                      "src": "5700:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                        "typeString": "struct StdStorage storage pointer"
                      }
                    },
                    "id": 9040,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "5705:7:10",
                    "memberName": "_target",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 8371,
                    "src": "5700:12:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5688:24:10"
                },
                {
                  "assignments": [
                    9043
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9043,
                      "mutability": "mutable",
                      "name": "s",
                      "nameLocation": "5730:1:10",
                      "nodeType": "VariableDeclaration",
                      "scope": 9060,
                      "src": "5722:9:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9042,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5722:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 9047,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 9045,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9032,
                        "src": "5739:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      ],
                      "id": 9044,
                      "name": "find",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8869,
                      "src": "5734:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$8374_storage_ptr_$returns$_t_uint256_$",
                        "typeString": "function (struct StdStorage storage pointer) returns (uint256)"
                      }
                    },
                    "id": 9046,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5734:10:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5722:22:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 9052,
                            "name": "t",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9038,
                            "src": "5780:1:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 9055,
                                "name": "s",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9043,
                                "src": "5791:1:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 9054,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5783:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 9053,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "5783:7:10",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9056,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5783:10:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "id": 9050,
                            "name": "vm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8407,
                            "src": "5772:2:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Vm_$13464",
                              "typeString": "contract Vm"
                            }
                          },
                          "id": 9051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "5775:4:10",
                          "memberName": "load",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11994,
                          "src": "5772:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_bytes32_$",
                            "typeString": "function (address,bytes32) view external returns (bytes32)"
                          }
                        },
                        "id": 9057,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5772:22:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 9048,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "5761:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 9049,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "5765:6:10",
                      "memberName": "encode",
                      "nodeType": "MemberAccess",
                      "src": "5761:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () pure returns (bytes memory)"
                      }
                    },
                    "id": 9058,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5761:34:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 9036,
                  "id": 9059,
                  "nodeType": "Return",
                  "src": "5754:41:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "read",
            "nameLocation": "5617:4:10",
            "parameters": {
              "id": 9033,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9032,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "5641:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9061,
                  "src": "5622:23:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9031,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9030,
                      "name": "StdStorage",
                      "nameLocations": [
                        "5622:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "5622:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "5622:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5621:25:10"
            },
            "returnParameters": {
              "id": 9036,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9035,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9061,
                  "src": "5664:12:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9034,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5664:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5663:14:10"
            },
            "scope": 9266,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "id": 9080,
            "nodeType": "FunctionDefinition",
            "src": "5808:131:10",
            "nodes": [],
            "body": {
              "id": 9079,
              "nodeType": "Block",
              "src": "5882:57:10",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 9072,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9064,
                            "src": "5915:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                              "typeString": "struct StdStorage storage pointer"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                              "typeString": "struct StdStorage storage pointer"
                            }
                          ],
                          "id": 9071,
                          "name": "read",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9061,
                          "src": "5910:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$8374_storage_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (struct StdStorage storage pointer) returns (bytes memory)"
                          }
                        },
                        "id": 9073,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5910:10:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 9075,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5923:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes32_$",
                              "typeString": "type(bytes32)"
                            },
                            "typeName": {
                              "id": 9074,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "5923:7:10",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 9076,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "5922:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        }
                      ],
                      "expression": {
                        "id": 9069,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "5899:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 9070,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "5903:6:10",
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "5899:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 9077,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5899:33:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 9068,
                  "id": 9078,
                  "nodeType": "Return",
                  "src": "5892:40:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "read_bytes32",
            "nameLocation": "5817:12:10",
            "parameters": {
              "id": 9065,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9064,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "5849:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9080,
                  "src": "5830:23:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9063,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9062,
                      "name": "StdStorage",
                      "nameLocations": [
                        "5830:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "5830:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "5830:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5829:25:10"
            },
            "returnParameters": {
              "id": 9068,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9067,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9080,
                  "src": "5873:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9066,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5873:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5872:9:10"
            },
            "scope": 9266,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 9111,
            "nodeType": "FunctionDefinition",
            "src": "5945:279:10",
            "nodes": [],
            "body": {
              "id": 9110,
              "nodeType": "Block",
              "src": "6013:211:10",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    9089
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9089,
                      "mutability": "mutable",
                      "name": "v",
                      "nameLocation": "6030:1:10",
                      "nodeType": "VariableDeclaration",
                      "scope": 9110,
                      "src": "6023:8:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 9088,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6023:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 9093,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 9091,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9083,
                        "src": "6043:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      ],
                      "id": 9090,
                      "name": "read_int",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9168,
                      "src": "6034:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$8374_storage_ptr_$returns$_t_int256_$",
                        "typeString": "function (struct StdStorage storage pointer) returns (int256)"
                      }
                    },
                    "id": 9092,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6034:14:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6023:25:10"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 9096,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 9094,
                      "name": "v",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9089,
                      "src": "6062:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 9095,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6067:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "6062:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 9099,
                  "nodeType": "IfStatement",
                  "src": "6058:24:10",
                  "trueBody": {
                    "expression": {
                      "hexValue": "66616c7365",
                      "id": 9097,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6077:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "functionReturnParameters": 9087,
                    "id": 9098,
                    "nodeType": "Return",
                    "src": "6070:12:10"
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 9102,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 9100,
                      "name": "v",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9089,
                      "src": "6096:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "31",
                      "id": 9101,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6101:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "6096:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 9105,
                  "nodeType": "IfStatement",
                  "src": "6092:23:10",
                  "trueBody": {
                    "expression": {
                      "hexValue": "74727565",
                      "id": 9103,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6111:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "functionReturnParameters": 9087,
                    "id": 9104,
                    "nodeType": "Return",
                    "src": "6104:11:10"
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "73746453746f7261676520726561645f626f6f6c2853746453746f72616765293a2043616e6e6f74206465636f64652e204d616b65207375726520796f75206172652072656164696e67206120626f6f6c2e",
                        "id": 9107,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6132:84:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_91e3b02d190bb3e407570bfe894974b331ad10ba40f732248485a8a79ed8e4f5",
                          "typeString": "literal_string \"stdStorage read_bool(StdStorage): Cannot decode. Make sure you are reading a bool.\""
                        },
                        "value": "stdStorage read_bool(StdStorage): Cannot decode. Make sure you are reading a bool."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_91e3b02d190bb3e407570bfe894974b331ad10ba40f732248485a8a79ed8e4f5",
                          "typeString": "literal_string \"stdStorage read_bool(StdStorage): Cannot decode. Make sure you are reading a bool.\""
                        }
                      ],
                      "id": 9106,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -19,
                        -19
                      ],
                      "referencedDeclaration": -19,
                      "src": "6125:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 9108,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6125:92:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9109,
                  "nodeType": "ExpressionStatement",
                  "src": "6125:92:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "read_bool",
            "nameLocation": "5954:9:10",
            "parameters": {
              "id": 9084,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9083,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "5983:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9111,
                  "src": "5964:23:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9082,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9081,
                      "name": "StdStorage",
                      "nameLocations": [
                        "5964:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "5964:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "5964:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5963:25:10"
            },
            "returnParameters": {
              "id": 9087,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9086,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9111,
                  "src": "6007:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 9085,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6007:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6006:6:10"
            },
            "scope": 9266,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 9130,
            "nodeType": "FunctionDefinition",
            "src": "6230:131:10",
            "nodes": [],
            "body": {
              "id": 9129,
              "nodeType": "Block",
              "src": "6304:57:10",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 9122,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9114,
                            "src": "6337:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                              "typeString": "struct StdStorage storage pointer"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                              "typeString": "struct StdStorage storage pointer"
                            }
                          ],
                          "id": 9121,
                          "name": "read",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9061,
                          "src": "6332:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$8374_storage_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (struct StdStorage storage pointer) returns (bytes memory)"
                          }
                        },
                        "id": 9123,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6332:10:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 9125,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6345:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 9124,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6345:7:10",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 9126,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "6344:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        }
                      ],
                      "expression": {
                        "id": 9119,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "6321:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 9120,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "6325:6:10",
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "6321:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 9127,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6321:33:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "functionReturnParameters": 9118,
                  "id": 9128,
                  "nodeType": "Return",
                  "src": "6314:40:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "read_address",
            "nameLocation": "6239:12:10",
            "parameters": {
              "id": 9115,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9114,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "6271:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9130,
                  "src": "6252:23:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9113,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9112,
                      "name": "StdStorage",
                      "nameLocations": [
                        "6252:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "6252:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "6252:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6251:25:10"
            },
            "returnParameters": {
              "id": 9118,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9117,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9130,
                  "src": "6295:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9116,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6295:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6294:9:10"
            },
            "scope": 9266,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 9149,
            "nodeType": "FunctionDefinition",
            "src": "6367:128:10",
            "nodes": [],
            "body": {
              "id": 9148,
              "nodeType": "Block",
              "src": "6438:57:10",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 9141,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9133,
                            "src": "6471:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                              "typeString": "struct StdStorage storage pointer"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                              "typeString": "struct StdStorage storage pointer"
                            }
                          ],
                          "id": 9140,
                          "name": "read",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9061,
                          "src": "6466:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$8374_storage_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (struct StdStorage storage pointer) returns (bytes memory)"
                          }
                        },
                        "id": 9142,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6466:10:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 9144,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6479:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 9143,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6479:7:10",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 9145,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "6478:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        }
                      ],
                      "expression": {
                        "id": 9138,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "6455:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 9139,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "6459:6:10",
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "6455:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 9146,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6455:33:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 9137,
                  "id": 9147,
                  "nodeType": "Return",
                  "src": "6448:40:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "read_uint",
            "nameLocation": "6376:9:10",
            "parameters": {
              "id": 9134,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9133,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "6405:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9149,
                  "src": "6386:23:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9132,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9131,
                      "name": "StdStorage",
                      "nameLocations": [
                        "6386:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "6386:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "6386:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6385:25:10"
            },
            "returnParameters": {
              "id": 9137,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9136,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9149,
                  "src": "6429:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9135,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6429:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6428:9:10"
            },
            "scope": 9266,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 9168,
            "nodeType": "FunctionDefinition",
            "src": "6501:125:10",
            "nodes": [],
            "body": {
              "id": 9167,
              "nodeType": "Block",
              "src": "6570:56:10",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 9160,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9152,
                            "src": "6603:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                              "typeString": "struct StdStorage storage pointer"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                              "typeString": "struct StdStorage storage pointer"
                            }
                          ],
                          "id": 9159,
                          "name": "read",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9061,
                          "src": "6598:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$8374_storage_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (struct StdStorage storage pointer) returns (bytes memory)"
                          }
                        },
                        "id": 9161,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6598:10:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 9163,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6611:6:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_int256_$",
                              "typeString": "type(int256)"
                            },
                            "typeName": {
                              "id": 9162,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6611:6:10",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 9164,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "6610:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_int256_$",
                          "typeString": "type(int256)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_int256_$",
                          "typeString": "type(int256)"
                        }
                      ],
                      "expression": {
                        "id": 9157,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "6587:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 9158,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "6591:6:10",
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "6587:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 9165,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6587:32:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 9156,
                  "id": 9166,
                  "nodeType": "Return",
                  "src": "6580:39:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "read_int",
            "nameLocation": "6510:8:10",
            "parameters": {
              "id": 9153,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9152,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "6538:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9168,
                  "src": "6519:23:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9151,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9150,
                      "name": "StdStorage",
                      "nameLocations": [
                        "6519:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "6519:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "6519:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6518:25:10"
            },
            "returnParameters": {
              "id": 9156,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9155,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9168,
                  "src": "6562:6:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 9154,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6562:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6561:8:10"
            },
            "scope": 9266,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 9224,
            "nodeType": "FunctionDefinition",
            "src": "6632:304:10",
            "nodes": [],
            "body": {
              "id": 9223,
              "nodeType": "Block",
              "src": "6719:217:10",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    9178
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9178,
                      "mutability": "mutable",
                      "name": "out",
                      "nameLocation": "6737:3:10",
                      "nodeType": "VariableDeclaration",
                      "scope": 9223,
                      "src": "6729:11:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 9177,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6729:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 9179,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6729:11:10"
                },
                {
                  "assignments": [
                    9181
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9181,
                      "mutability": "mutable",
                      "name": "max",
                      "nameLocation": "6759:3:10",
                      "nodeType": "VariableDeclaration",
                      "scope": 9223,
                      "src": "6751:11:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9180,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6751:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 9190,
                  "initialValue": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 9185,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "id": 9182,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9170,
                          "src": "6765:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 9183,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "6767:6:10",
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "src": "6765:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "hexValue": "3332",
                        "id": 9184,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6776:2:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_32_by_1",
                          "typeString": "int_const 32"
                        },
                        "value": "32"
                      },
                      "src": "6765:13:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "expression": {
                        "id": 9187,
                        "name": "b",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9170,
                        "src": "6786:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 9188,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "6788:6:10",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "6786:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 9189,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "6765:29:10",
                    "trueExpression": {
                      "hexValue": "3332",
                      "id": 9186,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6781:2:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_32_by_1",
                        "typeString": "int_const 32"
                      },
                      "value": "32"
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6751:43:10"
                },
                {
                  "body": {
                    "id": 9219,
                    "nodeType": "Block",
                    "src": "6838:72:10",
                    "statements": [
                      {
                        "expression": {
                          "id": 9217,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9201,
                            "name": "out",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9178,
                            "src": "6852:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "|=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "id": 9216,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  },
                                  "id": 9210,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "baseExpression": {
                                      "id": 9204,
                                      "name": "b",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9170,
                                      "src": "6867:1:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 9208,
                                    "indexExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 9207,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 9205,
                                        "name": "offset",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9172,
                                        "src": "6869:6:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "id": 9206,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9192,
                                        "src": "6878:1:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "6869:10:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6867:13:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "30784646",
                                    "id": 9209,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6883:4:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_255_by_1",
                                      "typeString": "int_const 255"
                                    },
                                    "value": "0xFF"
                                  },
                                  "src": "6867:20:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                ],
                                "id": 9203,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6859:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": {
                                  "id": 9202,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6859:7:10",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 9211,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6859:29:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 9214,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 9212,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9192,
                                    "src": "6893:1:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "hexValue": "38",
                                    "id": 9213,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6897:1:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_8_by_1",
                                      "typeString": "int_const 8"
                                    },
                                    "value": "8"
                                  },
                                  "src": "6893:5:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 9215,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "6892:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "6859:40:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "6852:47:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 9218,
                        "nodeType": "ExpressionStatement",
                        "src": "6852:47:10"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 9197,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 9195,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9192,
                      "src": "6824:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 9196,
                      "name": "max",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9181,
                      "src": "6828:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6824:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 9220,
                  "initializationExpression": {
                    "assignments": [
                      9192
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 9192,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "6817:1:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 9220,
                        "src": "6809:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9191,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6809:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 9194,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 9193,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6821:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "6809:13:10"
                  },
                  "isSimpleCounterLoop": true,
                  "loopExpression": {
                    "expression": {
                      "id": 9199,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "6833:3:10",
                      "subExpression": {
                        "id": 9198,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9192,
                        "src": "6833:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 9200,
                    "nodeType": "ExpressionStatement",
                    "src": "6833:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "6804:106:10"
                },
                {
                  "expression": {
                    "id": 9221,
                    "name": "out",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9178,
                    "src": "6926:3:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 9176,
                  "id": 9222,
                  "nodeType": "Return",
                  "src": "6919:10:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "bytesToBytes32",
            "nameLocation": "6641:14:10",
            "parameters": {
              "id": 9173,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9170,
                  "mutability": "mutable",
                  "name": "b",
                  "nameLocation": "6669:1:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9224,
                  "src": "6656:14:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9169,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6656:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9172,
                  "mutability": "mutable",
                  "name": "offset",
                  "nameLocation": "6680:6:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9224,
                  "src": "6672:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9171,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6672:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6655:32:10"
            },
            "returnParameters": {
              "id": 9176,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9175,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9224,
                  "src": "6710:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9174,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6710:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6709:9:10"
            },
            "scope": 9266,
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          },
          {
            "id": 9265,
            "nodeType": "FunctionDefinition",
            "src": "6942:393:10",
            "nodes": [],
            "body": {
              "id": 9264,
              "nodeType": "Block",
              "src": "7015:320:10",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    9233
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9233,
                      "mutability": "mutable",
                      "name": "result",
                      "nameLocation": "7038:6:10",
                      "nodeType": "VariableDeclaration",
                      "scope": 9264,
                      "src": "7025:19:10",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 9232,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "7025:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 9241,
                  "initialValue": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 9239,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 9236,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9227,
                            "src": "7057:1:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          },
                          "id": 9237,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "7059:6:10",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "7057:8:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "hexValue": "3332",
                          "id": 9238,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7068:2:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_32_by_1",
                            "typeString": "int_const 32"
                          },
                          "value": "32"
                        },
                        "src": "7057:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 9235,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "7047:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (bytes memory)"
                      },
                      "typeName": {
                        "id": 9234,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "7051:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      }
                    },
                    "id": 9240,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7047:24:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7025:46:10"
                },
                {
                  "body": {
                    "id": 9260,
                    "nodeType": "Block",
                    "src": "7120:185:10",
                    "statements": [
                      {
                        "assignments": [
                          9254
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9254,
                            "mutability": "mutable",
                            "name": "k",
                            "nameLocation": "7142:1:10",
                            "nodeType": "VariableDeclaration",
                            "scope": 9260,
                            "src": "7134:9:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 9253,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "7134:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9258,
                        "initialValue": {
                          "baseExpression": {
                            "id": 9255,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9227,
                            "src": "7146:1:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          },
                          "id": 9257,
                          "indexExpression": {
                            "id": 9256,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9243,
                            "src": "7148:1:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7146:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7134:16:10"
                      },
                      {
                        "AST": {
                          "nativeSrc": "7220:75:10",
                          "nodeType": "YulBlock",
                          "src": "7220:75:10",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "7249:6:10",
                                        "nodeType": "YulIdentifier",
                                        "src": "7249:6:10"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nativeSrc": "7261:2:10",
                                            "nodeType": "YulLiteral",
                                            "src": "7261:2:10",
                                            "type": "",
                                            "value": "32"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nativeSrc": "7269:2:10",
                                                "nodeType": "YulLiteral",
                                                "src": "7269:2:10",
                                                "type": "",
                                                "value": "32"
                                              },
                                              {
                                                "name": "i",
                                                "nativeSrc": "7273:1:10",
                                                "nodeType": "YulIdentifier",
                                                "src": "7273:1:10"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nativeSrc": "7265:3:10",
                                              "nodeType": "YulIdentifier",
                                              "src": "7265:3:10"
                                            },
                                            "nativeSrc": "7265:10:10",
                                            "nodeType": "YulFunctionCall",
                                            "src": "7265:10:10"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "7257:3:10",
                                          "nodeType": "YulIdentifier",
                                          "src": "7257:3:10"
                                        },
                                        "nativeSrc": "7257:19:10",
                                        "nodeType": "YulFunctionCall",
                                        "src": "7257:19:10"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "7245:3:10",
                                      "nodeType": "YulIdentifier",
                                      "src": "7245:3:10"
                                    },
                                    "nativeSrc": "7245:32:10",
                                    "nodeType": "YulFunctionCall",
                                    "src": "7245:32:10"
                                  },
                                  {
                                    "name": "k",
                                    "nativeSrc": "7279:1:10",
                                    "nodeType": "YulIdentifier",
                                    "src": "7279:1:10"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "7238:6:10",
                                  "nodeType": "YulIdentifier",
                                  "src": "7238:6:10"
                                },
                                "nativeSrc": "7238:43:10",
                                "nodeType": "YulFunctionCall",
                                "src": "7238:43:10"
                              },
                              "nativeSrc": "7238:43:10",
                              "nodeType": "YulExpressionStatement",
                              "src": "7238:43:10"
                            }
                          ]
                        },
                        "documentation": "@solidity memory-safe-assembly",
                        "evmVersion": "paris",
                        "externalReferences": [
                          {
                            "declaration": 9243,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7273:1:10",
                            "valueSize": 1
                          },
                          {
                            "declaration": 9254,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7279:1:10",
                            "valueSize": 1
                          },
                          {
                            "declaration": 9233,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7249:6:10",
                            "valueSize": 1
                          }
                        ],
                        "id": 9259,
                        "nodeType": "InlineAssembly",
                        "src": "7211:84:10"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 9249,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 9246,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9243,
                      "src": "7101:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 9247,
                        "name": "b",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9227,
                        "src": "7105:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 9248,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "7107:6:10",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "7105:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7101:12:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 9261,
                  "initializationExpression": {
                    "assignments": [
                      9243
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 9243,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "7094:1:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 9261,
                        "src": "7086:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9242,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7086:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 9245,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 9244,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7098:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "7086:13:10"
                  },
                  "isSimpleCounterLoop": true,
                  "loopExpression": {
                    "expression": {
                      "id": 9251,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "7115:3:10",
                      "subExpression": {
                        "id": 9250,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9243,
                        "src": "7115:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 9252,
                    "nodeType": "ExpressionStatement",
                    "src": "7115:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "7081:224:10"
                },
                {
                  "expression": {
                    "id": 9262,
                    "name": "result",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9233,
                    "src": "7322:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 9231,
                  "id": 9263,
                  "nodeType": "Return",
                  "src": "7315:13:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "flatten",
            "nameLocation": "6951:7:10",
            "parameters": {
              "id": 9228,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9227,
                  "mutability": "mutable",
                  "name": "b",
                  "nameLocation": "6976:1:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9265,
                  "src": "6959:18:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 9225,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "6959:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 9226,
                    "nodeType": "ArrayTypeName",
                    "src": "6959:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6958:20:10"
            },
            "returnParameters": {
              "id": 9231,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9230,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9265,
                  "src": "7001:12:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9229,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7001:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7000:14:10"
            },
            "scope": 9266,
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          }
        ],
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "stdStorageSafe",
        "contractDependencies": [],
        "contractKind": "library",
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          9266
        ],
        "name": "stdStorageSafe",
        "nameLocation": "376:14:10",
        "scope": 9828,
        "usedErrors": [],
        "usedEvents": [
          8384,
          8390
        ]
      },
      {
        "id": 9827,
        "nodeType": "ContractDefinition",
        "src": "7339:4665:10",
        "nodes": [
          {
            "id": 9283,
            "nodeType": "VariableDeclaration",
            "src": "7364:84:10",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "vm",
            "nameLocation": "7384:2:10",
            "scope": 9827,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Vm_$13464",
              "typeString": "contract Vm"
            },
            "typeName": {
              "id": 9268,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 9267,
                "name": "Vm",
                "nameLocations": [
                  "7364:2:10"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 13464,
                "src": "7364:2:10"
              },
              "referencedDeclaration": 13464,
              "src": "7364:2:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Vm_$13464",
                "typeString": "contract Vm"
              }
            },
            "value": {
              "arguments": [
                {
                  "arguments": [
                    {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6865766d20636865617420636f6465",
                                  "id": 9277,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7426:17:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d",
                                    "typeString": "literal_string \"hevm cheat code\""
                                  },
                                  "value": "hevm cheat code"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d",
                                    "typeString": "literal_string \"hevm cheat code\""
                                  }
                                ],
                                "id": 9276,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "7416:9:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 9278,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7416:28:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 9275,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "7408:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 9274,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7408:7:10",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 9279,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7408:37:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 9273,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "7400:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint160_$",
                          "typeString": "type(uint160)"
                        },
                        "typeName": {
                          "id": 9272,
                          "name": "uint160",
                          "nodeType": "ElementaryTypeName",
                          "src": "7400:7:10",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 9280,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7400:46:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    ],
                    "id": 9271,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "nodeType": "ElementaryTypeNameExpression",
                    "src": "7392:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_address_$",
                      "typeString": "type(address)"
                    },
                    "typeName": {
                      "id": 9270,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "7392:7:10",
                      "typeDescriptions": {}
                    }
                  },
                  "id": 9281,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "typeConversion",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "7392:55:10",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                ],
                "id": 9269,
                "name": "Vm",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 13464,
                "src": "7389:2:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_contract$_Vm_$13464_$",
                  "typeString": "type(contract Vm)"
                }
              },
              "id": 9282,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "nameLocations": [],
              "names": [],
              "nodeType": "FunctionCall",
              "src": "7389:59:10",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Vm_$13464",
                "typeString": "contract Vm"
              }
            },
            "visibility": "private"
          },
          {
            "id": 9296,
            "nodeType": "FunctionDefinition",
            "src": "7455:118:10",
            "nodes": [],
            "body": {
              "id": 9295,
              "nodeType": "Block",
              "src": "7522:51:10",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9292,
                        "name": "sigStr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9285,
                        "src": "7559:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "id": 9290,
                        "name": "stdStorageSafe",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9266,
                        "src": "7539:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_stdStorageSafe_$9266_$",
                          "typeString": "type(library stdStorageSafe)"
                        }
                      },
                      "id": 9291,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "7554:4:10",
                      "memberName": "sigs",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8425,
                      "src": "7539:19:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes4_$",
                        "typeString": "function (string memory) pure returns (bytes4)"
                      }
                    },
                    "id": 9293,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7539:27:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 9289,
                  "id": 9294,
                  "nodeType": "Return",
                  "src": "7532:34:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "sigs",
            "nameLocation": "7464:4:10",
            "parameters": {
              "id": 9286,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9285,
                  "mutability": "mutable",
                  "name": "sigStr",
                  "nameLocation": "7483:6:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9296,
                  "src": "7469:20:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 9284,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7469:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7468:22:10"
            },
            "returnParameters": {
              "id": 9289,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9288,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9296,
                  "src": "7514:6:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 9287,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "7514:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7513:8:10"
            },
            "scope": 9827,
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 9310,
            "nodeType": "FunctionDefinition",
            "src": "7579:115:10",
            "nodes": [],
            "body": {
              "id": 9309,
              "nodeType": "Block",
              "src": "7645:49:10",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9306,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9299,
                        "src": "7682:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      ],
                      "expression": {
                        "id": 9304,
                        "name": "stdStorageSafe",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9266,
                        "src": "7662:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_stdStorageSafe_$9266_$",
                          "typeString": "type(library stdStorageSafe)"
                        }
                      },
                      "id": 9305,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "7677:4:10",
                      "memberName": "find",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8869,
                      "src": "7662:19:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$8374_storage_ptr_$returns$_t_uint256_$",
                        "typeString": "function (struct StdStorage storage pointer) returns (uint256)"
                      }
                    },
                    "id": 9307,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7662:25:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 9303,
                  "id": 9308,
                  "nodeType": "Return",
                  "src": "7655:32:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "find",
            "nameLocation": "7588:4:10",
            "parameters": {
              "id": 9300,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9299,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "7612:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9310,
                  "src": "7593:23:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9298,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9297,
                      "name": "StdStorage",
                      "nameLocations": [
                        "7593:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "7593:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "7593:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7592:25:10"
            },
            "returnParameters": {
              "id": 9303,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9302,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9310,
                  "src": "7636:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9301,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7636:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7635:9:10"
            },
            "scope": 9827,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 9328,
            "nodeType": "FunctionDefinition",
            "src": "7700:156:10",
            "nodes": [],
            "body": {
              "id": 9327,
              "nodeType": "Block",
              "src": "7796:60:10",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9323,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9313,
                        "src": "7835:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      {
                        "id": 9324,
                        "name": "_target",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9315,
                        "src": "7841:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 9321,
                        "name": "stdStorageSafe",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9266,
                        "src": "7813:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_stdStorageSafe_$9266_$",
                          "typeString": "type(library stdStorageSafe)"
                        }
                      },
                      "id": 9322,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "7828:6:10",
                      "memberName": "target",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8889,
                      "src": "7813:21:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$8374_storage_ptr_$_t_address_$returns$_t_struct$_StdStorage_$8374_storage_ptr_$",
                        "typeString": "function (struct StdStorage storage pointer,address) returns (struct StdStorage storage pointer)"
                      }
                    },
                    "id": 9325,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7813:36:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage storage pointer"
                    }
                  },
                  "functionReturnParameters": 9320,
                  "id": 9326,
                  "nodeType": "Return",
                  "src": "7806:43:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "target",
            "nameLocation": "7709:6:10",
            "parameters": {
              "id": 9316,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9313,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "7735:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9328,
                  "src": "7716:23:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9312,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9311,
                      "name": "StdStorage",
                      "nameLocations": [
                        "7716:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "7716:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "7716:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9315,
                  "mutability": "mutable",
                  "name": "_target",
                  "nameLocation": "7749:7:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9328,
                  "src": "7741:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9314,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7741:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7715:42:10"
            },
            "returnParameters": {
              "id": 9320,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9319,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9328,
                  "src": "7776:18:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9318,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9317,
                      "name": "StdStorage",
                      "nameLocations": [
                        "7776:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "7776:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "7776:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7775:20:10"
            },
            "scope": 9827,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 9346,
            "nodeType": "FunctionDefinition",
            "src": "7862:143:10",
            "nodes": [],
            "body": {
              "id": 9345,
              "nodeType": "Block",
              "src": "7951:54:10",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9341,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9331,
                        "src": "7987:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      {
                        "id": 9342,
                        "name": "_sig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9333,
                        "src": "7993:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "expression": {
                        "id": 9339,
                        "name": "stdStorageSafe",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9266,
                        "src": "7968:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_stdStorageSafe_$9266_$",
                          "typeString": "type(library stdStorageSafe)"
                        }
                      },
                      "id": 9340,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "7983:3:10",
                      "memberName": "sig",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8909,
                      "src": "7968:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$8374_storage_ptr_$_t_bytes4_$returns$_t_struct$_StdStorage_$8374_storage_ptr_$",
                        "typeString": "function (struct StdStorage storage pointer,bytes4) returns (struct StdStorage storage pointer)"
                      }
                    },
                    "id": 9343,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7968:30:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage storage pointer"
                    }
                  },
                  "functionReturnParameters": 9338,
                  "id": 9344,
                  "nodeType": "Return",
                  "src": "7961:37:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "sig",
            "nameLocation": "7871:3:10",
            "parameters": {
              "id": 9334,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9331,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "7894:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9346,
                  "src": "7875:23:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9330,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9329,
                      "name": "StdStorage",
                      "nameLocations": [
                        "7875:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "7875:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "7875:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9333,
                  "mutability": "mutable",
                  "name": "_sig",
                  "nameLocation": "7907:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9346,
                  "src": "7900:11:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 9332,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "7900:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7874:38:10"
            },
            "returnParameters": {
              "id": 9338,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9337,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9346,
                  "src": "7931:18:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9336,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9335,
                      "name": "StdStorage",
                      "nameLocations": [
                        "7931:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "7931:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "7931:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7930:20:10"
            },
            "scope": 9827,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 9364,
            "nodeType": "FunctionDefinition",
            "src": "8011:150:10",
            "nodes": [],
            "body": {
              "id": 9363,
              "nodeType": "Block",
              "src": "8107:54:10",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9359,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9349,
                        "src": "8143:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      {
                        "id": 9360,
                        "name": "_sig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9351,
                        "src": "8149:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "id": 9357,
                        "name": "stdStorageSafe",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9266,
                        "src": "8124:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_stdStorageSafe_$9266_$",
                          "typeString": "type(library stdStorageSafe)"
                        }
                      },
                      "id": 9358,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "8139:3:10",
                      "memberName": "sig",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8931,
                      "src": "8124:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$8374_storage_ptr_$_t_string_memory_ptr_$returns$_t_struct$_StdStorage_$8374_storage_ptr_$",
                        "typeString": "function (struct StdStorage storage pointer,string memory) returns (struct StdStorage storage pointer)"
                      }
                    },
                    "id": 9361,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8124:30:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage storage pointer"
                    }
                  },
                  "functionReturnParameters": 9356,
                  "id": 9362,
                  "nodeType": "Return",
                  "src": "8117:37:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "sig",
            "nameLocation": "8020:3:10",
            "parameters": {
              "id": 9352,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9349,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "8043:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9364,
                  "src": "8024:23:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9348,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9347,
                      "name": "StdStorage",
                      "nameLocations": [
                        "8024:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "8024:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "8024:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9351,
                  "mutability": "mutable",
                  "name": "_sig",
                  "nameLocation": "8063:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9364,
                  "src": "8049:18:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 9350,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8049:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8023:45:10"
            },
            "returnParameters": {
              "id": 9356,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9355,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9364,
                  "src": "8087:18:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9354,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9353,
                      "name": "StdStorage",
                      "nameLocations": [
                        "8087:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "8087:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "8087:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8086:20:10"
            },
            "scope": 9827,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 9382,
            "nodeType": "FunctionDefinition",
            "src": "8167:152:10",
            "nodes": [],
            "body": {
              "id": 9381,
              "nodeType": "Block",
              "src": "8261:58:10",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9377,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9367,
                        "src": "8302:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      {
                        "id": 9378,
                        "name": "who",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9369,
                        "src": "8308:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 9375,
                        "name": "stdStorageSafe",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9266,
                        "src": "8278:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_stdStorageSafe_$9266_$",
                          "typeString": "type(library stdStorageSafe)"
                        }
                      },
                      "id": 9376,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "8293:8:10",
                      "memberName": "with_key",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8962,
                      "src": "8278:23:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$8374_storage_ptr_$_t_address_$returns$_t_struct$_StdStorage_$8374_storage_ptr_$",
                        "typeString": "function (struct StdStorage storage pointer,address) returns (struct StdStorage storage pointer)"
                      }
                    },
                    "id": 9379,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8278:34:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage storage pointer"
                    }
                  },
                  "functionReturnParameters": 9374,
                  "id": 9380,
                  "nodeType": "Return",
                  "src": "8271:41:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "with_key",
            "nameLocation": "8176:8:10",
            "parameters": {
              "id": 9370,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9367,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "8204:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9382,
                  "src": "8185:23:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9366,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9365,
                      "name": "StdStorage",
                      "nameLocations": [
                        "8185:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "8185:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "8185:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9369,
                  "mutability": "mutable",
                  "name": "who",
                  "nameLocation": "8218:3:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9382,
                  "src": "8210:11:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9368,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8210:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8184:38:10"
            },
            "returnParameters": {
              "id": 9374,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9373,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9382,
                  "src": "8241:18:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9372,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9371,
                      "name": "StdStorage",
                      "nameLocations": [
                        "8241:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "8241:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "8241:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8240:20:10"
            },
            "scope": 9827,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 9400,
            "nodeType": "FunctionDefinition",
            "src": "8325:152:10",
            "nodes": [],
            "body": {
              "id": 9399,
              "nodeType": "Block",
              "src": "8419:58:10",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9395,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9385,
                        "src": "8460:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      {
                        "id": 9396,
                        "name": "amt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9387,
                        "src": "8466:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 9393,
                        "name": "stdStorageSafe",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9266,
                        "src": "8436:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_stdStorageSafe_$9266_$",
                          "typeString": "type(library stdStorageSafe)"
                        }
                      },
                      "id": 9394,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "8451:8:10",
                      "memberName": "with_key",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8987,
                      "src": "8436:23:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$8374_storage_ptr_$_t_uint256_$returns$_t_struct$_StdStorage_$8374_storage_ptr_$",
                        "typeString": "function (struct StdStorage storage pointer,uint256) returns (struct StdStorage storage pointer)"
                      }
                    },
                    "id": 9397,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8436:34:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage storage pointer"
                    }
                  },
                  "functionReturnParameters": 9392,
                  "id": 9398,
                  "nodeType": "Return",
                  "src": "8429:41:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "with_key",
            "nameLocation": "8334:8:10",
            "parameters": {
              "id": 9388,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9385,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "8362:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9400,
                  "src": "8343:23:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9384,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9383,
                      "name": "StdStorage",
                      "nameLocations": [
                        "8343:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "8343:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "8343:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9387,
                  "mutability": "mutable",
                  "name": "amt",
                  "nameLocation": "8376:3:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9400,
                  "src": "8368:11:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9386,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8368:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8342:38:10"
            },
            "returnParameters": {
              "id": 9392,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9391,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9400,
                  "src": "8399:18:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9390,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9389,
                      "name": "StdStorage",
                      "nameLocations": [
                        "8399:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "8399:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "8399:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8398:20:10"
            },
            "scope": 9827,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 9418,
            "nodeType": "FunctionDefinition",
            "src": "8483:152:10",
            "nodes": [],
            "body": {
              "id": 9417,
              "nodeType": "Block",
              "src": "8577:58:10",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9413,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9403,
                        "src": "8618:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      {
                        "id": 9414,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9405,
                        "src": "8624:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 9411,
                        "name": "stdStorageSafe",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9266,
                        "src": "8594:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_stdStorageSafe_$9266_$",
                          "typeString": "type(library stdStorageSafe)"
                        }
                      },
                      "id": 9412,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "8609:8:10",
                      "memberName": "with_key",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9009,
                      "src": "8594:23:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$8374_storage_ptr_$_t_bytes32_$returns$_t_struct$_StdStorage_$8374_storage_ptr_$",
                        "typeString": "function (struct StdStorage storage pointer,bytes32) returns (struct StdStorage storage pointer)"
                      }
                    },
                    "id": 9415,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8594:34:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage storage pointer"
                    }
                  },
                  "functionReturnParameters": 9410,
                  "id": 9416,
                  "nodeType": "Return",
                  "src": "8587:41:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "with_key",
            "nameLocation": "8492:8:10",
            "parameters": {
              "id": 9406,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9403,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "8520:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9418,
                  "src": "8501:23:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9402,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9401,
                      "name": "StdStorage",
                      "nameLocations": [
                        "8501:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "8501:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "8501:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9405,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "8534:3:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9418,
                  "src": "8526:11:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9404,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8526:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8500:38:10"
            },
            "returnParameters": {
              "id": 9410,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9409,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9418,
                  "src": "8557:18:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9408,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9407,
                      "name": "StdStorage",
                      "nameLocations": [
                        "8557:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "8557:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "8557:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8556:20:10"
            },
            "scope": 9827,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 9436,
            "nodeType": "FunctionDefinition",
            "src": "8641:152:10",
            "nodes": [],
            "body": {
              "id": 9435,
              "nodeType": "Block",
              "src": "8735:58:10",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9431,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9421,
                        "src": "8773:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      {
                        "id": 9432,
                        "name": "_depth",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9423,
                        "src": "8779:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 9429,
                        "name": "stdStorageSafe",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9266,
                        "src": "8752:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_stdStorageSafe_$9266_$",
                          "typeString": "type(library stdStorageSafe)"
                        }
                      },
                      "id": 9430,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "8767:5:10",
                      "memberName": "depth",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9029,
                      "src": "8752:20:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$8374_storage_ptr_$_t_uint256_$returns$_t_struct$_StdStorage_$8374_storage_ptr_$",
                        "typeString": "function (struct StdStorage storage pointer,uint256) returns (struct StdStorage storage pointer)"
                      }
                    },
                    "id": 9433,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8752:34:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage storage pointer"
                    }
                  },
                  "functionReturnParameters": 9428,
                  "id": 9434,
                  "nodeType": "Return",
                  "src": "8745:41:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "depth",
            "nameLocation": "8650:5:10",
            "parameters": {
              "id": 9424,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9421,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "8675:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9436,
                  "src": "8656:23:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9420,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9419,
                      "name": "StdStorage",
                      "nameLocations": [
                        "8656:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "8656:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "8656:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9423,
                  "mutability": "mutable",
                  "name": "_depth",
                  "nameLocation": "8689:6:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9436,
                  "src": "8681:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9422,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8681:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8655:41:10"
            },
            "returnParameters": {
              "id": 9428,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9427,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9436,
                  "src": "8715:18:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9426,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9425,
                      "name": "StdStorage",
                      "nameLocations": [
                        "8715:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "8715:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "8715:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8714:20:10"
            },
            "scope": 9827,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 9459,
            "nodeType": "FunctionDefinition",
            "src": "8799:138:10",
            "nodes": [],
            "body": {
              "id": 9458,
              "nodeType": "Block",
              "src": "8869:68:10",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9445,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9439,
                        "src": "8893:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 9452,
                                    "name": "who",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9441,
                                    "src": "8923:3:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 9451,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8915:7:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 9450,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8915:7:10",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 9453,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8915:12:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 9449,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8907:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 9448,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "8907:7:10",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9454,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8907:21:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9447,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8899:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 9446,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "8899:7:10",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 9455,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8899:30:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 9444,
                      "name": "checked_write",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9459,
                        9476,
                        9514,
                        9659
                      ],
                      "referencedDeclaration": 9659,
                      "src": "8879:13:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$8374_storage_ptr_$_t_bytes32_$returns$__$",
                        "typeString": "function (struct StdStorage storage pointer,bytes32)"
                      }
                    },
                    "id": 9456,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8879:51:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9457,
                  "nodeType": "ExpressionStatement",
                  "src": "8879:51:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "checked_write",
            "nameLocation": "8808:13:10",
            "parameters": {
              "id": 9442,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9439,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "8841:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9459,
                  "src": "8822:23:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9438,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9437,
                      "name": "StdStorage",
                      "nameLocations": [
                        "8822:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "8822:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "8822:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9441,
                  "mutability": "mutable",
                  "name": "who",
                  "nameLocation": "8855:3:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9459,
                  "src": "8847:11:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9440,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8847:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8821:38:10"
            },
            "returnParameters": {
              "id": 9443,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8869:0:10"
            },
            "scope": 9827,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 9476,
            "nodeType": "FunctionDefinition",
            "src": "8943:120:10",
            "nodes": [],
            "body": {
              "id": 9475,
              "nodeType": "Block",
              "src": "9013:50:10",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9468,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9462,
                        "src": "9037:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 9471,
                            "name": "amt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9464,
                            "src": "9051:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9470,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9043:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 9469,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "9043:7:10",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 9472,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9043:12:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 9467,
                      "name": "checked_write",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9459,
                        9476,
                        9514,
                        9659
                      ],
                      "referencedDeclaration": 9659,
                      "src": "9023:13:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$8374_storage_ptr_$_t_bytes32_$returns$__$",
                        "typeString": "function (struct StdStorage storage pointer,bytes32)"
                      }
                    },
                    "id": 9473,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9023:33:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9474,
                  "nodeType": "ExpressionStatement",
                  "src": "9023:33:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "checked_write",
            "nameLocation": "8952:13:10",
            "parameters": {
              "id": 9465,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9462,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "8985:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9476,
                  "src": "8966:23:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9461,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9460,
                      "name": "StdStorage",
                      "nameLocations": [
                        "8966:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "8966:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "8966:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9464,
                  "mutability": "mutable",
                  "name": "amt",
                  "nameLocation": "8999:3:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9476,
                  "src": "8991:11:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9463,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8991:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8965:38:10"
            },
            "returnParameters": {
              "id": 9466,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9013:0:10"
            },
            "scope": 9827,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 9496,
            "nodeType": "FunctionDefinition",
            "src": "9069:132:10",
            "nodes": [],
            "body": {
              "id": 9495,
              "nodeType": "Block",
              "src": "9142:59:10",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9485,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9479,
                        "src": "9166:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 9490,
                                "name": "val",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9481,
                                "src": "9188:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 9489,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9180:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 9488,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "9180:7:10",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9491,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9180:12:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9487,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9172:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 9486,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "9172:7:10",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 9492,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9172:21:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 9484,
                      "name": "checked_write",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9459,
                        9476,
                        9514,
                        9659
                      ],
                      "referencedDeclaration": 9659,
                      "src": "9152:13:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$8374_storage_ptr_$_t_bytes32_$returns$__$",
                        "typeString": "function (struct StdStorage storage pointer,bytes32)"
                      }
                    },
                    "id": 9493,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9152:42:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9494,
                  "nodeType": "ExpressionStatement",
                  "src": "9152:42:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "checked_write_int",
            "nameLocation": "9078:17:10",
            "parameters": {
              "id": 9482,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9479,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "9115:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9496,
                  "src": "9096:23:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9478,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9477,
                      "name": "StdStorage",
                      "nameLocations": [
                        "9096:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "9096:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "9096:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9481,
                  "mutability": "mutable",
                  "name": "val",
                  "nameLocation": "9128:3:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9496,
                  "src": "9121:10:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 9480,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9121:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9095:37:10"
            },
            "returnParameters": {
              "id": 9483,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9142:0:10"
            },
            "scope": 9827,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 9514,
            "nodeType": "FunctionDefinition",
            "src": "9207:222:10",
            "nodes": [],
            "body": {
              "id": 9513,
              "nodeType": "Block",
              "src": "9276:153:10",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    9505
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9505,
                      "mutability": "mutable",
                      "name": "t",
                      "nameLocation": "9294:1:10",
                      "nodeType": "VariableDeclaration",
                      "scope": 9513,
                      "src": "9286:9:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 9504,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "9286:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 9506,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9286:9:10"
                },
                {
                  "AST": {
                    "nativeSrc": "9357:34:10",
                    "nodeType": "YulBlock",
                    "src": "9357:34:10",
                    "statements": [
                      {
                        "nativeSrc": "9371:10:10",
                        "nodeType": "YulAssignment",
                        "src": "9371:10:10",
                        "value": {
                          "name": "write",
                          "nativeSrc": "9376:5:10",
                          "nodeType": "YulIdentifier",
                          "src": "9376:5:10"
                        },
                        "variableNames": [
                          {
                            "name": "t",
                            "nativeSrc": "9371:1:10",
                            "nodeType": "YulIdentifier",
                            "src": "9371:1:10"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": "@solidity memory-safe-assembly",
                  "evmVersion": "paris",
                  "externalReferences": [
                    {
                      "declaration": 9505,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "9371:1:10",
                      "valueSize": 1
                    },
                    {
                      "declaration": 9501,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "9376:5:10",
                      "valueSize": 1
                    }
                  ],
                  "id": 9507,
                  "nodeType": "InlineAssembly",
                  "src": "9348:43:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9509,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9499,
                        "src": "9414:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      {
                        "id": 9510,
                        "name": "t",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9505,
                        "src": "9420:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 9508,
                      "name": "checked_write",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9459,
                        9476,
                        9514,
                        9659
                      ],
                      "referencedDeclaration": 9659,
                      "src": "9400:13:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$8374_storage_ptr_$_t_bytes32_$returns$__$",
                        "typeString": "function (struct StdStorage storage pointer,bytes32)"
                      }
                    },
                    "id": 9511,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9400:22:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9512,
                  "nodeType": "ExpressionStatement",
                  "src": "9400:22:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "checked_write",
            "nameLocation": "9216:13:10",
            "parameters": {
              "id": 9502,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9499,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "9249:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9514,
                  "src": "9230:23:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9498,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9497,
                      "name": "StdStorage",
                      "nameLocations": [
                        "9230:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "9230:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "9230:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9501,
                  "mutability": "mutable",
                  "name": "write",
                  "nameLocation": "9260:5:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9514,
                  "src": "9255:10:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 9500,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9255:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9229:37:10"
            },
            "returnParameters": {
              "id": 9503,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9276:0:10"
            },
            "scope": 9827,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 9659,
            "nodeType": "FunctionDefinition",
            "src": "9435:1095:10",
            "nodes": [],
            "body": {
              "id": 9658,
              "nodeType": "Block",
              "src": "9505:1025:10",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    9523
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9523,
                      "mutability": "mutable",
                      "name": "who",
                      "nameLocation": "9523:3:10",
                      "nodeType": "VariableDeclaration",
                      "scope": 9658,
                      "src": "9515:11:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9522,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9515:7:10",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 9526,
                  "initialValue": {
                    "expression": {
                      "id": 9524,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9517,
                      "src": "9529:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                        "typeString": "struct StdStorage storage pointer"
                      }
                    },
                    "id": 9525,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "9534:7:10",
                    "memberName": "_target",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 8371,
                    "src": "9529:12:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9515:26:10"
                },
                {
                  "assignments": [
                    9528
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9528,
                      "mutability": "mutable",
                      "name": "fsig",
                      "nameLocation": "9558:4:10",
                      "nodeType": "VariableDeclaration",
                      "scope": 9658,
                      "src": "9551:11:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 9527,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "9551:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 9531,
                  "initialValue": {
                    "expression": {
                      "id": 9529,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9517,
                      "src": "9565:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                        "typeString": "struct StdStorage storage pointer"
                      }
                    },
                    "id": 9530,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "9570:4:10",
                    "memberName": "_sig",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 8367,
                    "src": "9565:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9551:23:10"
                },
                {
                  "assignments": [
                    9533
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9533,
                      "mutability": "mutable",
                      "name": "field_depth",
                      "nameLocation": "9592:11:10",
                      "nodeType": "VariableDeclaration",
                      "scope": 9658,
                      "src": "9584:19:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9532,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9584:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 9536,
                  "initialValue": {
                    "expression": {
                      "id": 9534,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9517,
                      "src": "9606:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                        "typeString": "struct StdStorage storage pointer"
                      }
                    },
                    "id": 9535,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "9611:6:10",
                    "memberName": "_depth",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 8369,
                    "src": "9606:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9584:33:10"
                },
                {
                  "assignments": [
                    9541
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9541,
                      "mutability": "mutable",
                      "name": "ins",
                      "nameLocation": "9644:3:10",
                      "nodeType": "VariableDeclaration",
                      "scope": 9658,
                      "src": "9627:20:10",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 9539,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "9627:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 9540,
                        "nodeType": "ArrayTypeName",
                        "src": "9627:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 9544,
                  "initialValue": {
                    "expression": {
                      "id": 9542,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9517,
                      "src": "9650:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                        "typeString": "struct StdStorage storage pointer"
                      }
                    },
                    "id": 9543,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "9655:5:10",
                    "memberName": "_keys",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 8365,
                    "src": "9650:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                      "typeString": "bytes32[] storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9627:33:10"
                },
                {
                  "assignments": [
                    9546
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9546,
                      "mutability": "mutable",
                      "name": "cald",
                      "nameLocation": "9684:4:10",
                      "nodeType": "VariableDeclaration",
                      "scope": 9658,
                      "src": "9671:17:10",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 9545,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "9671:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 9554,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 9549,
                        "name": "fsig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9528,
                        "src": "9708:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 9551,
                            "name": "ins",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9541,
                            "src": "9722:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          ],
                          "id": 9550,
                          "name": "flatten",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9826,
                          "src": "9714:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes32[] memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 9552,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9714:12:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 9547,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "9691:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 9548,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "9695:12:10",
                      "memberName": "encodePacked",
                      "nodeType": "MemberAccess",
                      "src": "9691:16:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () pure returns (bytes memory)"
                      }
                    },
                    "id": 9553,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9691:36:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9671:56:10"
                },
                {
                  "condition": {
                    "id": 9569,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "9741:69:10",
                    "subExpression": {
                      "baseExpression": {
                        "baseExpression": {
                          "baseExpression": {
                            "expression": {
                              "id": 9555,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9517,
                              "src": "9742:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                                "typeString": "struct StdStorage storage pointer"
                              }
                            },
                            "id": 9556,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "9747:5:10",
                            "memberName": "finds",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8362,
                            "src": "9742:10:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_bool_$_$_$",
                              "typeString": "mapping(address => mapping(bytes4 => mapping(bytes32 => bool)))"
                            }
                          },
                          "id": 9558,
                          "indexExpression": {
                            "id": 9557,
                            "name": "who",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9523,
                            "src": "9753:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9742:15:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_bool_$_$",
                            "typeString": "mapping(bytes4 => mapping(bytes32 => bool))"
                          }
                        },
                        "id": 9560,
                        "indexExpression": {
                          "id": 9559,
                          "name": "fsig",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9528,
                          "src": "9758:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9742:21:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                          "typeString": "mapping(bytes32 => bool)"
                        }
                      },
                      "id": 9568,
                      "indexExpression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 9564,
                                "name": "ins",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9541,
                                "src": "9791:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                  "typeString": "bytes32[] memory"
                                }
                              },
                              {
                                "id": 9565,
                                "name": "field_depth",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9533,
                                "src": "9796:11:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                  "typeString": "bytes32[] memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 9562,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "9774:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 9563,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "9778:12:10",
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "src": "9774:16:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 9566,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9774:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 9561,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -8,
                          "src": "9764:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 9567,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9764:45:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "9742:68:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 9575,
                  "nodeType": "IfStatement",
                  "src": "9737:110:10",
                  "trueBody": {
                    "id": 9574,
                    "nodeType": "Block",
                    "src": "9812:35:10",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 9571,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9517,
                              "src": "9831:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                                "typeString": "struct StdStorage storage pointer"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                                "typeString": "struct StdStorage storage pointer"
                              }
                            ],
                            "id": 9570,
                            "name": "find",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9310,
                            "src": "9826:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$8374_storage_ptr_$returns$_t_uint256_$",
                              "typeString": "function (struct StdStorage storage pointer) returns (uint256)"
                            }
                          },
                          "id": 9572,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9826:10:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9573,
                        "nodeType": "ExpressionStatement",
                        "src": "9826:10:10"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    9577
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9577,
                      "mutability": "mutable",
                      "name": "slot",
                      "nameLocation": "9864:4:10",
                      "nodeType": "VariableDeclaration",
                      "scope": 9658,
                      "src": "9856:12:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 9576,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "9856:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 9595,
                  "initialValue": {
                    "arguments": [
                      {
                        "baseExpression": {
                          "baseExpression": {
                            "baseExpression": {
                              "expression": {
                                "id": 9580,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9517,
                                "src": "9879:4:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                                  "typeString": "struct StdStorage storage pointer"
                                }
                              },
                              "id": 9581,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "9884:5:10",
                              "memberName": "slots",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 8354,
                              "src": "9879:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_uint256_$_$_$",
                                "typeString": "mapping(address => mapping(bytes4 => mapping(bytes32 => uint256)))"
                              }
                            },
                            "id": 9583,
                            "indexExpression": {
                              "id": 9582,
                              "name": "who",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9523,
                              "src": "9890:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9879:15:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_uint256_$_$",
                              "typeString": "mapping(bytes4 => mapping(bytes32 => uint256))"
                            }
                          },
                          "id": 9585,
                          "indexExpression": {
                            "id": 9584,
                            "name": "fsig",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9528,
                            "src": "9895:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9879:21:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                            "typeString": "mapping(bytes32 => uint256)"
                          }
                        },
                        "id": 9593,
                        "indexExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 9589,
                                  "name": "ins",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9541,
                                  "src": "9928:3:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                    "typeString": "bytes32[] memory"
                                  }
                                },
                                {
                                  "id": 9590,
                                  "name": "field_depth",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9533,
                                  "src": "9933:11:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                    "typeString": "bytes32[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 9587,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "9911:3:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 9588,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "9915:12:10",
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "9911:16:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 9591,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9911:34:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 9586,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "9901:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 9592,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9901:45:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9879:68:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 9579,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "9871:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes32_$",
                        "typeString": "type(bytes32)"
                      },
                      "typeName": {
                        "id": 9578,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "9871:7:10",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 9594,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9871:77:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9856:92:10"
                },
                {
                  "assignments": [
                    9597
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9597,
                      "mutability": "mutable",
                      "name": "fdat",
                      "nameLocation": "9967:4:10",
                      "nodeType": "VariableDeclaration",
                      "scope": 9658,
                      "src": "9959:12:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 9596,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "9959:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 9598,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9959:12:10"
                },
                {
                  "id": 9615,
                  "nodeType": "Block",
                  "src": "9981:128:10",
                  "statements": [
                    {
                      "assignments": [
                        null,
                        9600
                      ],
                      "declarations": [
                        null,
                        {
                          "constant": false,
                          "id": 9600,
                          "mutability": "mutable",
                          "name": "rdat",
                          "nameLocation": "10011:4:10",
                          "nodeType": "VariableDeclaration",
                          "scope": 9615,
                          "src": "9998:17:10",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 9599,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "9998:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 9605,
                      "initialValue": {
                        "arguments": [
                          {
                            "id": 9603,
                            "name": "cald",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9546,
                            "src": "10034:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "id": 9601,
                            "name": "who",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9523,
                            "src": "10019:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 9602,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "10023:10:10",
                          "memberName": "staticcall",
                          "nodeType": "MemberAccess",
                          "src": "10019:14:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                          }
                        },
                        "id": 9604,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10019:20:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "9995:44:10"
                    },
                    {
                      "expression": {
                        "id": 9613,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 9606,
                          "name": "fdat",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9597,
                          "src": "10053:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 9608,
                              "name": "rdat",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9600,
                              "src": "10075:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9611,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "hexValue": "3332",
                                "id": 9609,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10081:2:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 9610,
                                "name": "field_depth",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9533,
                                "src": "10086:11:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10081:16:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9607,
                            "name": "bytesToBytes32",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9785,
                            "src": "10060:14:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                            }
                          },
                          "id": 9612,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10060:38:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "10053:45:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "id": 9614,
                      "nodeType": "ExpressionStatement",
                      "src": "10053:45:10"
                    }
                  ]
                },
                {
                  "assignments": [
                    9617
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9617,
                      "mutability": "mutable",
                      "name": "curr",
                      "nameLocation": "10126:4:10",
                      "nodeType": "VariableDeclaration",
                      "scope": 9658,
                      "src": "10118:12:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 9616,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "10118:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 9623,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 9620,
                        "name": "who",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9523,
                        "src": "10141:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 9621,
                        "name": "slot",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9577,
                        "src": "10146:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 9618,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9283,
                        "src": "10133:2:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$13464",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 9619,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "10136:4:10",
                      "memberName": "load",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11994,
                      "src": "10133:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_bytes32_$",
                        "typeString": "function (address,bytes32) view external returns (bytes32)"
                      }
                    },
                    "id": 9622,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10133:18:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10118:33:10"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 9626,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 9624,
                      "name": "fdat",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9597,
                      "src": "10166:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "id": 9625,
                      "name": "curr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9617,
                      "src": "10174:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "10166:12:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 9633,
                  "nodeType": "IfStatement",
                  "src": "10162:218:10",
                  "trueBody": {
                    "id": 9632,
                    "nodeType": "Block",
                    "src": "10180:200:10",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "hexValue": "66616c7365",
                              "id": 9628,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10219:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            },
                            {
                              "hexValue": "73746453746f726167652066696e642853746453746f72616765293a205061636b656420736c6f742e205468697320776f756c642063617573652064616e6765726f7573206f76657277726974696e6720616e642063757272656e746c792069736e277420737570706f727465642e",
                              "id": 9629,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10242:113:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4bfa78e02b745efea2b29d358f6dc28382f5209b1d2b2dbeb8ef0862e74440b3",
                                "typeString": "literal_string \"stdStorage find(StdStorage): Packed slot. This would cause dangerous overwriting and currently isn't supported.\""
                              },
                              "value": "stdStorage find(StdStorage): Packed slot. This would cause dangerous overwriting and currently isn't supported."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4bfa78e02b745efea2b29d358f6dc28382f5209b1d2b2dbeb8ef0862e74440b3",
                                "typeString": "literal_string \"stdStorage find(StdStorage): Packed slot. This would cause dangerous overwriting and currently isn't supported.\""
                              }
                            ],
                            "id": 9627,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10194:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9630,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10194:175:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9631,
                        "nodeType": "ExpressionStatement",
                        "src": "10194:175:10"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9637,
                        "name": "who",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9523,
                        "src": "10398:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 9638,
                        "name": "slot",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9577,
                        "src": "10403:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 9639,
                        "name": "set",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9519,
                        "src": "10409:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 9634,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9283,
                        "src": "10389:2:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$13464",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 9636,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "10392:5:10",
                      "memberName": "store",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13038,
                      "src": "10389:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,bytes32,bytes32) external"
                      }
                    },
                    "id": 9640,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10389:24:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9641,
                  "nodeType": "ExpressionStatement",
                  "src": "10389:24:10"
                },
                {
                  "expression": {
                    "id": 9644,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "10423:19:10",
                    "subExpression": {
                      "expression": {
                        "id": 9642,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9517,
                        "src": "10430:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      "id": 9643,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "10435:7:10",
                      "memberName": "_target",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8371,
                      "src": "10430:12:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9645,
                  "nodeType": "ExpressionStatement",
                  "src": "10423:19:10"
                },
                {
                  "expression": {
                    "id": 9648,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "10452:16:10",
                    "subExpression": {
                      "expression": {
                        "id": 9646,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9517,
                        "src": "10459:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      "id": 9647,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "10464:4:10",
                      "memberName": "_sig",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8367,
                      "src": "10459:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9649,
                  "nodeType": "ExpressionStatement",
                  "src": "10452:16:10"
                },
                {
                  "expression": {
                    "id": 9652,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "10478:17:10",
                    "subExpression": {
                      "expression": {
                        "id": 9650,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9517,
                        "src": "10485:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      "id": 9651,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "10490:5:10",
                      "memberName": "_keys",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8365,
                      "src": "10485:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                        "typeString": "bytes32[] storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9653,
                  "nodeType": "ExpressionStatement",
                  "src": "10478:17:10"
                },
                {
                  "expression": {
                    "id": 9656,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "10505:18:10",
                    "subExpression": {
                      "expression": {
                        "id": 9654,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9517,
                        "src": "10512:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      "id": 9655,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "10517:6:10",
                      "memberName": "_depth",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8369,
                      "src": "10512:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9657,
                  "nodeType": "ExpressionStatement",
                  "src": "10505:18:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "checked_write",
            "nameLocation": "9444:13:10",
            "parameters": {
              "id": 9520,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9517,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "9477:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9659,
                  "src": "9458:23:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9516,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9515,
                      "name": "StdStorage",
                      "nameLocations": [
                        "9458:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "9458:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "9458:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9519,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "9491:3:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9659,
                  "src": "9483:11:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9518,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9483:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9457:38:10"
            },
            "returnParameters": {
              "id": 9521,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9505:0:10"
            },
            "scope": 9827,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 9673,
            "nodeType": "FunctionDefinition",
            "src": "10536:131:10",
            "nodes": [],
            "body": {
              "id": 9672,
              "nodeType": "Block",
              "src": "10610:57:10",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9669,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9662,
                        "src": "10655:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      ],
                      "expression": {
                        "id": 9667,
                        "name": "stdStorageSafe",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9266,
                        "src": "10627:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_stdStorageSafe_$9266_$",
                          "typeString": "type(library stdStorageSafe)"
                        }
                      },
                      "id": 9668,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "10642:12:10",
                      "memberName": "read_bytes32",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9080,
                      "src": "10627:27:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$8374_storage_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (struct StdStorage storage pointer) returns (bytes32)"
                      }
                    },
                    "id": 9670,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10627:33:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 9666,
                  "id": 9671,
                  "nodeType": "Return",
                  "src": "10620:40:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "read_bytes32",
            "nameLocation": "10545:12:10",
            "parameters": {
              "id": 9663,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9662,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "10577:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9673,
                  "src": "10558:23:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9661,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9660,
                      "name": "StdStorage",
                      "nameLocations": [
                        "10558:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "10558:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "10558:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10557:25:10"
            },
            "returnParameters": {
              "id": 9666,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9665,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9673,
                  "src": "10601:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9664,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10601:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10600:9:10"
            },
            "scope": 9827,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 9687,
            "nodeType": "FunctionDefinition",
            "src": "10673:122:10",
            "nodes": [],
            "body": {
              "id": 9686,
              "nodeType": "Block",
              "src": "10741:54:10",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9683,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9676,
                        "src": "10783:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      ],
                      "expression": {
                        "id": 9681,
                        "name": "stdStorageSafe",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9266,
                        "src": "10758:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_stdStorageSafe_$9266_$",
                          "typeString": "type(library stdStorageSafe)"
                        }
                      },
                      "id": 9682,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "10773:9:10",
                      "memberName": "read_bool",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9111,
                      "src": "10758:24:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$8374_storage_ptr_$returns$_t_bool_$",
                        "typeString": "function (struct StdStorage storage pointer) returns (bool)"
                      }
                    },
                    "id": 9684,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10758:30:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 9680,
                  "id": 9685,
                  "nodeType": "Return",
                  "src": "10751:37:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "read_bool",
            "nameLocation": "10682:9:10",
            "parameters": {
              "id": 9677,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9676,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "10711:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9687,
                  "src": "10692:23:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9675,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9674,
                      "name": "StdStorage",
                      "nameLocations": [
                        "10692:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "10692:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "10692:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10691:25:10"
            },
            "returnParameters": {
              "id": 9680,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9679,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9687,
                  "src": "10735:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 9678,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10735:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10734:6:10"
            },
            "scope": 9827,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 9701,
            "nodeType": "FunctionDefinition",
            "src": "10801:131:10",
            "nodes": [],
            "body": {
              "id": 9700,
              "nodeType": "Block",
              "src": "10875:57:10",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9697,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9690,
                        "src": "10920:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      ],
                      "expression": {
                        "id": 9695,
                        "name": "stdStorageSafe",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9266,
                        "src": "10892:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_stdStorageSafe_$9266_$",
                          "typeString": "type(library stdStorageSafe)"
                        }
                      },
                      "id": 9696,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "10907:12:10",
                      "memberName": "read_address",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9130,
                      "src": "10892:27:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$8374_storage_ptr_$returns$_t_address_$",
                        "typeString": "function (struct StdStorage storage pointer) returns (address)"
                      }
                    },
                    "id": 9698,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10892:33:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 9694,
                  "id": 9699,
                  "nodeType": "Return",
                  "src": "10885:40:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "read_address",
            "nameLocation": "10810:12:10",
            "parameters": {
              "id": 9691,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9690,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "10842:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9701,
                  "src": "10823:23:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9689,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9688,
                      "name": "StdStorage",
                      "nameLocations": [
                        "10823:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "10823:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "10823:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10822:25:10"
            },
            "returnParameters": {
              "id": 9694,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9693,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9701,
                  "src": "10866:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9692,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10866:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10865:9:10"
            },
            "scope": 9827,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 9715,
            "nodeType": "FunctionDefinition",
            "src": "10938:125:10",
            "nodes": [],
            "body": {
              "id": 9714,
              "nodeType": "Block",
              "src": "11009:54:10",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9711,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9704,
                        "src": "11051:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      ],
                      "expression": {
                        "id": 9709,
                        "name": "stdStorageSafe",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9266,
                        "src": "11026:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_stdStorageSafe_$9266_$",
                          "typeString": "type(library stdStorageSafe)"
                        }
                      },
                      "id": 9710,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "11041:9:10",
                      "memberName": "read_uint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9149,
                      "src": "11026:24:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$8374_storage_ptr_$returns$_t_uint256_$",
                        "typeString": "function (struct StdStorage storage pointer) returns (uint256)"
                      }
                    },
                    "id": 9712,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11026:30:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 9708,
                  "id": 9713,
                  "nodeType": "Return",
                  "src": "11019:37:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "read_uint",
            "nameLocation": "10947:9:10",
            "parameters": {
              "id": 9705,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9704,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "10976:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9715,
                  "src": "10957:23:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9703,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9702,
                      "name": "StdStorage",
                      "nameLocations": [
                        "10957:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "10957:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "10957:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10956:25:10"
            },
            "returnParameters": {
              "id": 9708,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9707,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9715,
                  "src": "11000:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9706,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11000:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10999:9:10"
            },
            "scope": 9827,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 9729,
            "nodeType": "FunctionDefinition",
            "src": "11069:122:10",
            "nodes": [],
            "body": {
              "id": 9728,
              "nodeType": "Block",
              "src": "11138:53:10",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9725,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9718,
                        "src": "11179:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      ],
                      "expression": {
                        "id": 9723,
                        "name": "stdStorageSafe",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9266,
                        "src": "11155:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_stdStorageSafe_$9266_$",
                          "typeString": "type(library stdStorageSafe)"
                        }
                      },
                      "id": 9724,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "11170:8:10",
                      "memberName": "read_int",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9168,
                      "src": "11155:23:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$8374_storage_ptr_$returns$_t_int256_$",
                        "typeString": "function (struct StdStorage storage pointer) returns (int256)"
                      }
                    },
                    "id": 9726,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11155:29:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 9722,
                  "id": 9727,
                  "nodeType": "Return",
                  "src": "11148:36:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "read_int",
            "nameLocation": "11078:8:10",
            "parameters": {
              "id": 9719,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9718,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "11106:4:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9729,
                  "src": "11087:23:10",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 9717,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9716,
                      "name": "StdStorage",
                      "nameLocations": [
                        "11087:10:10"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8374,
                      "src": "11087:10:10"
                    },
                    "referencedDeclaration": 8374,
                    "src": "11087:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11086:25:10"
            },
            "returnParameters": {
              "id": 9722,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9721,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9729,
                  "src": "11130:6:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 9720,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11130:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11129:8:10"
            },
            "scope": 9827,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 9785,
            "nodeType": "FunctionDefinition",
            "src": "11248:304:10",
            "nodes": [],
            "body": {
              "id": 9784,
              "nodeType": "Block",
              "src": "11335:217:10",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    9739
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9739,
                      "mutability": "mutable",
                      "name": "out",
                      "nameLocation": "11353:3:10",
                      "nodeType": "VariableDeclaration",
                      "scope": 9784,
                      "src": "11345:11:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 9738,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "11345:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 9740,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11345:11:10"
                },
                {
                  "assignments": [
                    9742
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9742,
                      "mutability": "mutable",
                      "name": "max",
                      "nameLocation": "11375:3:10",
                      "nodeType": "VariableDeclaration",
                      "scope": 9784,
                      "src": "11367:11:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9741,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11367:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 9751,
                  "initialValue": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 9746,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "id": 9743,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9731,
                          "src": "11381:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 9744,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "11383:6:10",
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "src": "11381:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "hexValue": "3332",
                        "id": 9745,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11392:2:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_32_by_1",
                          "typeString": "int_const 32"
                        },
                        "value": "32"
                      },
                      "src": "11381:13:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "expression": {
                        "id": 9748,
                        "name": "b",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9731,
                        "src": "11402:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 9749,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "11404:6:10",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "11402:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 9750,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "11381:29:10",
                    "trueExpression": {
                      "hexValue": "3332",
                      "id": 9747,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11397:2:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_32_by_1",
                        "typeString": "int_const 32"
                      },
                      "value": "32"
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11367:43:10"
                },
                {
                  "body": {
                    "id": 9780,
                    "nodeType": "Block",
                    "src": "11454:72:10",
                    "statements": [
                      {
                        "expression": {
                          "id": 9778,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9762,
                            "name": "out",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9739,
                            "src": "11468:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "|=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "id": 9777,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  },
                                  "id": 9771,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "baseExpression": {
                                      "id": 9765,
                                      "name": "b",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9731,
                                      "src": "11483:1:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 9769,
                                    "indexExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 9768,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 9766,
                                        "name": "offset",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9733,
                                        "src": "11485:6:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "id": 9767,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9753,
                                        "src": "11494:1:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "11485:10:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "11483:13:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "30784646",
                                    "id": 9770,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11499:4:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_255_by_1",
                                      "typeString": "int_const 255"
                                    },
                                    "value": "0xFF"
                                  },
                                  "src": "11483:20:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                ],
                                "id": 9764,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "11475:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": {
                                  "id": 9763,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "11475:7:10",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 9772,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11475:29:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 9775,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 9773,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9753,
                                    "src": "11509:1:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "hexValue": "38",
                                    "id": 9774,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11513:1:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_8_by_1",
                                      "typeString": "int_const 8"
                                    },
                                    "value": "8"
                                  },
                                  "src": "11509:5:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 9776,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "11508:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "11475:40:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "11468:47:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 9779,
                        "nodeType": "ExpressionStatement",
                        "src": "11468:47:10"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 9758,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 9756,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9753,
                      "src": "11440:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 9757,
                      "name": "max",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9742,
                      "src": "11444:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11440:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 9781,
                  "initializationExpression": {
                    "assignments": [
                      9753
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 9753,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "11433:1:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 9781,
                        "src": "11425:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9752,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11425:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 9755,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 9754,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11437:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "11425:13:10"
                  },
                  "isSimpleCounterLoop": true,
                  "loopExpression": {
                    "expression": {
                      "id": 9760,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "11449:3:10",
                      "subExpression": {
                        "id": 9759,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9753,
                        "src": "11449:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 9761,
                    "nodeType": "ExpressionStatement",
                    "src": "11449:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "11420:106:10"
                },
                {
                  "expression": {
                    "id": 9782,
                    "name": "out",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9739,
                    "src": "11542:3:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 9737,
                  "id": 9783,
                  "nodeType": "Return",
                  "src": "11535:10:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "bytesToBytes32",
            "nameLocation": "11257:14:10",
            "parameters": {
              "id": 9734,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9731,
                  "mutability": "mutable",
                  "name": "b",
                  "nameLocation": "11285:1:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9785,
                  "src": "11272:14:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9730,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "11272:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9733,
                  "mutability": "mutable",
                  "name": "offset",
                  "nameLocation": "11296:6:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9785,
                  "src": "11288:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9732,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11288:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11271:32:10"
            },
            "returnParameters": {
              "id": 9737,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9736,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9785,
                  "src": "11326:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9735,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11326:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11325:9:10"
            },
            "scope": 9827,
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          },
          {
            "id": 9826,
            "nodeType": "FunctionDefinition",
            "src": "11609:393:10",
            "nodes": [],
            "body": {
              "id": 9825,
              "nodeType": "Block",
              "src": "11682:320:10",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    9794
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9794,
                      "mutability": "mutable",
                      "name": "result",
                      "nameLocation": "11705:6:10",
                      "nodeType": "VariableDeclaration",
                      "scope": 9825,
                      "src": "11692:19:10",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 9793,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "11692:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 9802,
                  "initialValue": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 9800,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 9797,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9788,
                            "src": "11724:1:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          },
                          "id": 9798,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "11726:6:10",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "11724:8:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "hexValue": "3332",
                          "id": 9799,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11735:2:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_32_by_1",
                            "typeString": "int_const 32"
                          },
                          "value": "32"
                        },
                        "src": "11724:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 9796,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "11714:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (bytes memory)"
                      },
                      "typeName": {
                        "id": 9795,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "11718:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      }
                    },
                    "id": 9801,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11714:24:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11692:46:10"
                },
                {
                  "body": {
                    "id": 9821,
                    "nodeType": "Block",
                    "src": "11787:185:10",
                    "statements": [
                      {
                        "assignments": [
                          9815
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9815,
                            "mutability": "mutable",
                            "name": "k",
                            "nameLocation": "11809:1:10",
                            "nodeType": "VariableDeclaration",
                            "scope": 9821,
                            "src": "11801:9:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 9814,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "11801:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9819,
                        "initialValue": {
                          "baseExpression": {
                            "id": 9816,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9788,
                            "src": "11813:1:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          },
                          "id": 9818,
                          "indexExpression": {
                            "id": 9817,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9804,
                            "src": "11815:1:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11813:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11801:16:10"
                      },
                      {
                        "AST": {
                          "nativeSrc": "11887:75:10",
                          "nodeType": "YulBlock",
                          "src": "11887:75:10",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "11916:6:10",
                                        "nodeType": "YulIdentifier",
                                        "src": "11916:6:10"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nativeSrc": "11928:2:10",
                                            "nodeType": "YulLiteral",
                                            "src": "11928:2:10",
                                            "type": "",
                                            "value": "32"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nativeSrc": "11936:2:10",
                                                "nodeType": "YulLiteral",
                                                "src": "11936:2:10",
                                                "type": "",
                                                "value": "32"
                                              },
                                              {
                                                "name": "i",
                                                "nativeSrc": "11940:1:10",
                                                "nodeType": "YulIdentifier",
                                                "src": "11940:1:10"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nativeSrc": "11932:3:10",
                                              "nodeType": "YulIdentifier",
                                              "src": "11932:3:10"
                                            },
                                            "nativeSrc": "11932:10:10",
                                            "nodeType": "YulFunctionCall",
                                            "src": "11932:10:10"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "11924:3:10",
                                          "nodeType": "YulIdentifier",
                                          "src": "11924:3:10"
                                        },
                                        "nativeSrc": "11924:19:10",
                                        "nodeType": "YulFunctionCall",
                                        "src": "11924:19:10"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "11912:3:10",
                                      "nodeType": "YulIdentifier",
                                      "src": "11912:3:10"
                                    },
                                    "nativeSrc": "11912:32:10",
                                    "nodeType": "YulFunctionCall",
                                    "src": "11912:32:10"
                                  },
                                  {
                                    "name": "k",
                                    "nativeSrc": "11946:1:10",
                                    "nodeType": "YulIdentifier",
                                    "src": "11946:1:10"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "11905:6:10",
                                  "nodeType": "YulIdentifier",
                                  "src": "11905:6:10"
                                },
                                "nativeSrc": "11905:43:10",
                                "nodeType": "YulFunctionCall",
                                "src": "11905:43:10"
                              },
                              "nativeSrc": "11905:43:10",
                              "nodeType": "YulExpressionStatement",
                              "src": "11905:43:10"
                            }
                          ]
                        },
                        "documentation": "@solidity memory-safe-assembly",
                        "evmVersion": "paris",
                        "externalReferences": [
                          {
                            "declaration": 9804,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "11940:1:10",
                            "valueSize": 1
                          },
                          {
                            "declaration": 9815,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "11946:1:10",
                            "valueSize": 1
                          },
                          {
                            "declaration": 9794,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "11916:6:10",
                            "valueSize": 1
                          }
                        ],
                        "id": 9820,
                        "nodeType": "InlineAssembly",
                        "src": "11878:84:10"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 9810,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 9807,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9804,
                      "src": "11768:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 9808,
                        "name": "b",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9788,
                        "src": "11772:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 9809,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "11774:6:10",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "11772:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11768:12:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 9822,
                  "initializationExpression": {
                    "assignments": [
                      9804
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 9804,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "11761:1:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 9822,
                        "src": "11753:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9803,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11753:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 9806,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 9805,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11765:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "11753:13:10"
                  },
                  "isSimpleCounterLoop": true,
                  "loopExpression": {
                    "expression": {
                      "id": 9812,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "11782:3:10",
                      "subExpression": {
                        "id": 9811,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9804,
                        "src": "11782:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 9813,
                    "nodeType": "ExpressionStatement",
                    "src": "11782:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "11748:224:10"
                },
                {
                  "expression": {
                    "id": 9823,
                    "name": "result",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9794,
                    "src": "11989:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 9792,
                  "id": 9824,
                  "nodeType": "Return",
                  "src": "11982:13:10"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "flatten",
            "nameLocation": "11618:7:10",
            "parameters": {
              "id": 9789,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9788,
                  "mutability": "mutable",
                  "name": "b",
                  "nameLocation": "11643:1:10",
                  "nodeType": "VariableDeclaration",
                  "scope": 9826,
                  "src": "11626:18:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 9786,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "11626:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 9787,
                    "nodeType": "ArrayTypeName",
                    "src": "11626:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11625:20:10"
            },
            "returnParameters": {
              "id": 9792,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9791,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9826,
                  "src": "11668:12:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9790,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "11668:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11667:14:10"
            },
            "scope": 9827,
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          }
        ],
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "stdStorage",
        "contractDependencies": [],
        "contractKind": "library",
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          9827
        ],
        "name": "stdStorage",
        "nameLocation": "7347:10:10",
        "scope": 9828,
        "usedErrors": [],
        "usedEvents": []
      }
    ],
    "license": "MIT"
  },
  "id": 10
}