{
  "abi": [],
  "bytecode": {
    "object": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122056432700de7358d113a0f1cb4f00d1e6f69e00a7daa49103733b8e32280ae28364736f6c63430008110033",
    "sourceMap": "160:2609:7:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;160:2609:7;;;;;;;;;;;;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122056432700de7358d113a0f1cb4f00d1e6f69e00a7daa49103733b8e32280ae28364736f6c63430008110033",
    "sourceMap": "160:2609:7:-:0;;;;;;;;",
    "linkReferences": {}
  },
  "methodIdentifiers": {},
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdJson.sol\":\"stdJson\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xce189d25fa333ca6611c0d24a16482df6256420764c747e783e60cf9f28c922e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0237b62ace5fe2311343eb32299b2f1cf0177394d9826eae23f1d1f92ae31f09\",\"dweb:/ipfs/QmVxvdgnheCWjBqE75nvapSKSr3UPRLrZQzxjcf5vxDmE2\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x2d0cec0827a5ee9df571cde75cb742f8b977218283739e163801baa8c34439f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310afde56e845d7f36ca7ce191715038f8259d7a9250c171689744a797223556\",\"dweb:/ipfs/QmULG8AwNa5B64EMUSCwG1bAyJJK1sodAsAYvjk3vXbgMj\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.17+commit.8df45f5f"
    },
    "language": "Solidity",
    "output": {
      "abi": [],
      "devdoc": {
        "kind": "dev",
        "methods": {},
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {},
        "version": 1
      }
    },
    "settings": {
      "remappings": [
        ":ds-test/=lib/forge-std/lib/ds-test/src/",
        ":forge-std/=lib/forge-std/src/"
      ],
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "metadata": {
        "bytecodeHash": "ipfs"
      },
      "compilationTarget": {
        "lib/forge-std/src/StdJson.sol": "stdJson"
      },
      "libraries": {}
    },
    "sources": {
      "lib/forge-std/src/StdJson.sol": {
        "keccak256": "0xce189d25fa333ca6611c0d24a16482df6256420764c747e783e60cf9f28c922e",
        "urls": [
          "bzz-raw://0237b62ace5fe2311343eb32299b2f1cf0177394d9826eae23f1d1f92ae31f09",
          "dweb:/ipfs/QmVxvdgnheCWjBqE75nvapSKSr3UPRLrZQzxjcf5vxDmE2"
        ],
        "license": "MIT"
      },
      "lib/forge-std/src/Vm.sol": {
        "keccak256": "0x2d0cec0827a5ee9df571cde75cb742f8b977218283739e163801baa8c34439f6",
        "urls": [
          "bzz-raw://310afde56e845d7f36ca7ce191715038f8259d7a9250c171689744a797223556",
          "dweb:/ipfs/QmULG8AwNa5B64EMUSCwG1bAyJJK1sodAsAYvjk3vXbgMj"
        ],
        "license": "MIT"
      }
    },
    "version": 1
  },
  "ast": {
    "absolutePath": "lib/forge-std/src/StdJson.sol",
    "id": 5500,
    "exportedSymbols": {
      "Vm": [
        8315
      ],
      "VmSafe": [
        7990
      ],
      "stdJson": [
        5499
      ]
    },
    "nodeType": "SourceUnit",
    "src": "32:2738:7",
    "nodes": [
      {
        "id": 5141,
        "nodeType": "PragmaDirective",
        "src": "32:31:7",
        "literals": [
          "solidity",
          ">=",
          "0.6",
          ".0",
          "<",
          "0.9",
          ".0"
        ]
      },
      {
        "id": 5142,
        "nodeType": "PragmaDirective",
        "src": "65:33:7",
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ]
      },
      {
        "id": 5143,
        "nodeType": "ImportDirective",
        "src": "100:18:7",
        "absolutePath": "lib/forge-std/src/Vm.sol",
        "file": "./Vm.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 5500,
        "sourceUnit": 8316,
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "id": 5499,
        "nodeType": "ContractDefinition",
        "src": "160:2609:7",
        "nodes": [
          {
            "id": 5160,
            "nodeType": "VariableDeclaration",
            "src": "182:88:7",
            "constant": true,
            "mutability": "constant",
            "name": "vm",
            "nameLocation": "206:2:7",
            "scope": 5499,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_VmSafe_$7990",
              "typeString": "contract VmSafe"
            },
            "typeName": {
              "id": 5145,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 5144,
                "name": "VmSafe",
                "nameLocations": [
                  "182:6:7"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 7990,
                "src": "182:6:7"
              },
              "referencedDeclaration": 7990,
              "src": "182:6:7",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_VmSafe_$7990",
                "typeString": "contract VmSafe"
              }
            },
            "value": {
              "arguments": [
                {
                  "arguments": [
                    {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6865766d20636865617420636f6465",
                                  "id": 5154,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "248:17:7",
                                  "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": 5153,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "238:9:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 5155,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "238:28:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 5152,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "230:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 5151,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "230:7:7",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5156,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "230:37:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 5150,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "222:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint160_$",
                          "typeString": "type(uint160)"
                        },
                        "typeName": {
                          "id": 5149,
                          "name": "uint160",
                          "nodeType": "ElementaryTypeName",
                          "src": "222:7:7",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 5157,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "222:46:7",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    ],
                    "id": 5148,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "nodeType": "ElementaryTypeNameExpression",
                    "src": "214:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_address_$",
                      "typeString": "type(address)"
                    },
                    "typeName": {
                      "id": 5147,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "214:7:7",
                      "typeDescriptions": {}
                    }
                  },
                  "id": 5158,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "typeConversion",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "214:55:7",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                ],
                "id": 5146,
                "name": "Vm",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 8315,
                "src": "211:2:7",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_contract$_Vm_$8315_$",
                  "typeString": "type(contract Vm)"
                }
              },
              "id": 5159,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "nameLocations": [],
              "names": [],
              "nodeType": "FunctionCall",
              "src": "211:59:7",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Vm_$8315",
                "typeString": "contract Vm"
              }
            },
            "visibility": "private"
          },
          {
            "id": 5176,
            "nodeType": "FunctionDefinition",
            "src": "277:136:7",
            "body": {
              "id": 5175,
              "nodeType": "Block",
              "src": "366:47:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 5171,
                        "name": "json",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5162,
                        "src": "396:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 5172,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5164,
                        "src": "402:3:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "id": 5169,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5160,
                        "src": "383:2:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VmSafe_$7990",
                          "typeString": "contract VmSafe"
                        }
                      },
                      "id": 5170,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "386:9:7",
                      "memberName": "parseJson",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7962,
                      "src": "383:12:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (string memory,string memory) external returns (bytes memory)"
                      }
                    },
                    "id": 5173,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "383:23:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 5168,
                  "id": 5174,
                  "nodeType": "Return",
                  "src": "376:30:7"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "parseRaw",
            "nameLocation": "286:8:7",
            "parameters": {
              "id": 5165,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5162,
                  "mutability": "mutable",
                  "name": "json",
                  "nameLocation": "309:4:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 5176,
                  "src": "295:18:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5161,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "295:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5164,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "329:3:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 5176,
                  "src": "315:17:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5163,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "315:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "294:39:7"
            },
            "returnParameters": {
              "id": 5168,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5167,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 5176,
                  "src": "352:12:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5166,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "352:5:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "351:14:7"
            },
            "scope": 5499,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 5198,
            "nodeType": "FunctionDefinition",
            "src": "419:154:7",
            "body": {
              "id": 5197,
              "nodeType": "Block",
              "src": "503:70:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 5189,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5178,
                            "src": "544:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 5190,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5180,
                            "src": "550:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 5187,
                            "name": "vm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5160,
                            "src": "531:2:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_VmSafe_$7990",
                              "typeString": "contract VmSafe"
                            }
                          },
                          "id": 5188,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "534:9:7",
                          "memberName": "parseJson",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7962,
                          "src": "531:12:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory,string memory) external returns (bytes memory)"
                          }
                        },
                        "id": 5191,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "531:23:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 5193,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "557:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 5192,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "557:7:7",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 5194,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "556:9:7",
                        "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": 5185,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "520:3:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 5186,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "524:6:7",
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "520:10:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 5195,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "520:46:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 5184,
                  "id": 5196,
                  "nodeType": "Return",
                  "src": "513:53:7"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readUint",
            "nameLocation": "428:8:7",
            "parameters": {
              "id": 5181,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5178,
                  "mutability": "mutable",
                  "name": "json",
                  "nameLocation": "451:4:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 5198,
                  "src": "437:18:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5177,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "437:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5180,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "471:3:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 5198,
                  "src": "457:17:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5179,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "457:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "436:39:7"
            },
            "returnParameters": {
              "id": 5184,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5183,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 5198,
                  "src": "494:7:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5182,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "494:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "493:9:7"
            },
            "scope": 5499,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 5222,
            "nodeType": "FunctionDefinition",
            "src": "579:170:7",
            "body": {
              "id": 5221,
              "nodeType": "Block",
              "src": "677:72:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 5212,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5200,
                            "src": "718:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 5213,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5202,
                            "src": "724:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 5210,
                            "name": "vm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5160,
                            "src": "705:2:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_VmSafe_$7990",
                              "typeString": "contract VmSafe"
                            }
                          },
                          "id": 5211,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "708:9:7",
                          "memberName": "parseJson",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7962,
                          "src": "705:12:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory,string memory) external returns (bytes memory)"
                          }
                        },
                        "id": 5214,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "705:23:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "baseExpression": {
                              "id": 5216,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "731:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 5215,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "731:7:7",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5217,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "731:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "type(uint256[] memory)"
                            }
                          }
                        ],
                        "id": 5218,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "730:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                          "typeString": "type(uint256[] memory)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                          "typeString": "type(uint256[] memory)"
                        }
                      ],
                      "expression": {
                        "id": 5208,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "694:3:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 5209,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "698:6:7",
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "694:10:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 5219,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "694:48:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "functionReturnParameters": 5207,
                  "id": 5220,
                  "nodeType": "Return",
                  "src": "687:55:7"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readUintArray",
            "nameLocation": "588:13:7",
            "parameters": {
              "id": 5203,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5200,
                  "mutability": "mutable",
                  "name": "json",
                  "nameLocation": "616:4:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 5222,
                  "src": "602:18:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5199,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "602:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5202,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "636:3:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 5222,
                  "src": "622:17:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5201,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "622:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "601:39:7"
            },
            "returnParameters": {
              "id": 5207,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5206,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 5222,
                  "src": "659:16:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5204,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "659:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 5205,
                    "nodeType": "ArrayTypeName",
                    "src": "659:9:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "658:18:7"
            },
            "scope": 5499,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 5244,
            "nodeType": "FunctionDefinition",
            "src": "755:151:7",
            "body": {
              "id": 5243,
              "nodeType": "Block",
              "src": "837:69:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 5235,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5224,
                            "src": "878:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 5236,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5226,
                            "src": "884:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 5233,
                            "name": "vm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5160,
                            "src": "865:2:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_VmSafe_$7990",
                              "typeString": "contract VmSafe"
                            }
                          },
                          "id": 5234,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "868:9:7",
                          "memberName": "parseJson",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7962,
                          "src": "865:12:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory,string memory) external returns (bytes memory)"
                          }
                        },
                        "id": 5237,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "865:23:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 5239,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "891:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_int256_$",
                              "typeString": "type(int256)"
                            },
                            "typeName": {
                              "id": 5238,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "891:6:7",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 5240,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "890:8:7",
                        "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": 5231,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "854:3:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 5232,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "858:6:7",
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "854:10:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 5241,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "854:45:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 5230,
                  "id": 5242,
                  "nodeType": "Return",
                  "src": "847:52:7"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readInt",
            "nameLocation": "764:7:7",
            "parameters": {
              "id": 5227,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5224,
                  "mutability": "mutable",
                  "name": "json",
                  "nameLocation": "786:4:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 5244,
                  "src": "772:18:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5223,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "772:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5226,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "806:3:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 5244,
                  "src": "792:17:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5225,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "792:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "771:39:7"
            },
            "returnParameters": {
              "id": 5230,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5229,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 5244,
                  "src": "829:6:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 5228,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "829:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "828:8:7"
            },
            "scope": 5499,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 5268,
            "nodeType": "FunctionDefinition",
            "src": "912:167:7",
            "body": {
              "id": 5267,
              "nodeType": "Block",
              "src": "1008:71:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 5258,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5246,
                            "src": "1049:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 5259,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5248,
                            "src": "1055:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 5256,
                            "name": "vm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5160,
                            "src": "1036:2:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_VmSafe_$7990",
                              "typeString": "contract VmSafe"
                            }
                          },
                          "id": 5257,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "1039:9:7",
                          "memberName": "parseJson",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7962,
                          "src": "1036:12:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory,string memory) external returns (bytes memory)"
                          }
                        },
                        "id": 5260,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1036:23:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "baseExpression": {
                              "id": 5262,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1062:6:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int256_$",
                                "typeString": "type(int256)"
                              },
                              "typeName": {
                                "id": 5261,
                                "name": "int256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1062:6:7",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5263,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1062:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_array$_t_int256_$dyn_memory_ptr_$",
                              "typeString": "type(int256[] memory)"
                            }
                          }
                        ],
                        "id": 5264,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "1061:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_array$_t_int256_$dyn_memory_ptr_$",
                          "typeString": "type(int256[] memory)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_array$_t_int256_$dyn_memory_ptr_$",
                          "typeString": "type(int256[] memory)"
                        }
                      ],
                      "expression": {
                        "id": 5254,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "1025:3:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 5255,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "1029:6:7",
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "1025:10:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 5265,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1025:47:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_int256_$dyn_memory_ptr",
                      "typeString": "int256[] memory"
                    }
                  },
                  "functionReturnParameters": 5253,
                  "id": 5266,
                  "nodeType": "Return",
                  "src": "1018:54:7"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readIntArray",
            "nameLocation": "921:12:7",
            "parameters": {
              "id": 5249,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5246,
                  "mutability": "mutable",
                  "name": "json",
                  "nameLocation": "948:4:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 5268,
                  "src": "934:18:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5245,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "934:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5248,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "968:3:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 5268,
                  "src": "954:17:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5247,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "954:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "933:39:7"
            },
            "returnParameters": {
              "id": 5253,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5252,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 5268,
                  "src": "991:15:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_int256_$dyn_memory_ptr",
                    "typeString": "int256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5250,
                      "name": "int256",
                      "nodeType": "ElementaryTypeName",
                      "src": "991:6:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "id": 5251,
                    "nodeType": "ArrayTypeName",
                    "src": "991:8:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_int256_$dyn_storage_ptr",
                      "typeString": "int256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "990:17:7"
            },
            "scope": 5499,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 5290,
            "nodeType": "FunctionDefinition",
            "src": "1085:157:7",
            "body": {
              "id": 5289,
              "nodeType": "Block",
              "src": "1172:70:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 5281,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5270,
                            "src": "1213:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 5282,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5272,
                            "src": "1219:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 5279,
                            "name": "vm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5160,
                            "src": "1200:2:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_VmSafe_$7990",
                              "typeString": "contract VmSafe"
                            }
                          },
                          "id": 5280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "1203:9:7",
                          "memberName": "parseJson",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7962,
                          "src": "1200:12:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory,string memory) external returns (bytes memory)"
                          }
                        },
                        "id": 5283,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1200:23:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 5285,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1226:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes32_$",
                              "typeString": "type(bytes32)"
                            },
                            "typeName": {
                              "id": 5284,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1226:7:7",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 5286,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "1225:9:7",
                        "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": 5277,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "1189:3:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 5278,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "1193:6:7",
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "1189:10:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 5287,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1189:46:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 5276,
                  "id": 5288,
                  "nodeType": "Return",
                  "src": "1182:53:7"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readBytes32",
            "nameLocation": "1094:11:7",
            "parameters": {
              "id": 5273,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5270,
                  "mutability": "mutable",
                  "name": "json",
                  "nameLocation": "1120:4:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 5290,
                  "src": "1106:18:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5269,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1106:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5272,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "1140:3:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 5290,
                  "src": "1126:17:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5271,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1126:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1105:39:7"
            },
            "returnParameters": {
              "id": 5276,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5275,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 5290,
                  "src": "1163:7:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5274,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1163:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1162:9:7"
            },
            "scope": 5499,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 5314,
            "nodeType": "FunctionDefinition",
            "src": "1248:173:7",
            "body": {
              "id": 5313,
              "nodeType": "Block",
              "src": "1349:72:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 5304,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5292,
                            "src": "1390:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 5305,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5294,
                            "src": "1396:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 5302,
                            "name": "vm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5160,
                            "src": "1377:2:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_VmSafe_$7990",
                              "typeString": "contract VmSafe"
                            }
                          },
                          "id": 5303,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "1380:9:7",
                          "memberName": "parseJson",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7962,
                          "src": "1377:12:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory,string memory) external returns (bytes memory)"
                          }
                        },
                        "id": 5306,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1377:23:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "baseExpression": {
                              "id": 5308,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1403:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 5307,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "1403:7:7",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5309,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1403:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                              "typeString": "type(bytes32[] memory)"
                            }
                          }
                        ],
                        "id": 5310,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "1402:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                          "typeString": "type(bytes32[] memory)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                          "typeString": "type(bytes32[] memory)"
                        }
                      ],
                      "expression": {
                        "id": 5300,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "1366:3:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 5301,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "1370:6:7",
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "1366:10:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 5311,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1366:48:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 5299,
                  "id": 5312,
                  "nodeType": "Return",
                  "src": "1359:55:7"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readBytes32Array",
            "nameLocation": "1257:16:7",
            "parameters": {
              "id": 5295,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5292,
                  "mutability": "mutable",
                  "name": "json",
                  "nameLocation": "1288:4:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 5314,
                  "src": "1274:18:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5291,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1274:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5294,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "1308:3:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 5314,
                  "src": "1294:17:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5293,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1294:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1273:39:7"
            },
            "returnParameters": {
              "id": 5299,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5298,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 5314,
                  "src": "1331:16:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5296,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1331:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 5297,
                    "nodeType": "ArrayTypeName",
                    "src": "1331:9:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1330:18:7"
            },
            "scope": 5499,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 5336,
            "nodeType": "FunctionDefinition",
            "src": "1427:161:7",
            "body": {
              "id": 5335,
              "nodeType": "Block",
              "src": "1519:69:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 5327,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5316,
                            "src": "1560:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 5328,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5318,
                            "src": "1566:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 5325,
                            "name": "vm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5160,
                            "src": "1547:2:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_VmSafe_$7990",
                              "typeString": "contract VmSafe"
                            }
                          },
                          "id": 5326,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "1550:9:7",
                          "memberName": "parseJson",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7962,
                          "src": "1547:12:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory,string memory) external returns (bytes memory)"
                          }
                        },
                        "id": 5329,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1547:23:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 5331,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1573:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 5330,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "1573:6:7",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 5332,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "1572:8:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                          "typeString": "type(string storage pointer)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                          "typeString": "type(string storage pointer)"
                        }
                      ],
                      "expression": {
                        "id": 5323,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "1536:3:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 5324,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "1540:6:7",
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "1536:10:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 5333,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1536:45:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 5322,
                  "id": 5334,
                  "nodeType": "Return",
                  "src": "1529:52:7"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readString",
            "nameLocation": "1436:10:7",
            "parameters": {
              "id": 5319,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5316,
                  "mutability": "mutable",
                  "name": "json",
                  "nameLocation": "1461:4:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 5336,
                  "src": "1447:18:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5315,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1447:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5318,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "1481:3:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 5336,
                  "src": "1467:17:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5317,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1467:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1446:39:7"
            },
            "returnParameters": {
              "id": 5322,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5321,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 5336,
                  "src": "1504:13:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5320,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1504:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1503:15:7"
            },
            "scope": 5499,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 5360,
            "nodeType": "FunctionDefinition",
            "src": "1594:170:7",
            "body": {
              "id": 5359,
              "nodeType": "Block",
              "src": "1693:71:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 5350,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5338,
                            "src": "1734:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 5351,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5340,
                            "src": "1740:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 5348,
                            "name": "vm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5160,
                            "src": "1721:2:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_VmSafe_$7990",
                              "typeString": "contract VmSafe"
                            }
                          },
                          "id": 5349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "1724:9:7",
                          "memberName": "parseJson",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7962,
                          "src": "1721:12:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory,string memory) external returns (bytes memory)"
                          }
                        },
                        "id": 5352,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1721:23:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "baseExpression": {
                              "id": 5354,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1747:6:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                "typeString": "type(string storage pointer)"
                              },
                              "typeName": {
                                "id": 5353,
                                "name": "string",
                                "nodeType": "ElementaryTypeName",
                                "src": "1747:6:7",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5355,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1747:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "type(string memory[] memory)"
                            }
                          }
                        ],
                        "id": 5356,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "1746:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$",
                          "typeString": "type(string memory[] memory)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$",
                          "typeString": "type(string memory[] memory)"
                        }
                      ],
                      "expression": {
                        "id": 5346,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "1710:3:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 5347,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "1714:6:7",
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "1710:10:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 5357,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1710:47:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                      "typeString": "string memory[] memory"
                    }
                  },
                  "functionReturnParameters": 5345,
                  "id": 5358,
                  "nodeType": "Return",
                  "src": "1703:54:7"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readStringArray",
            "nameLocation": "1603:15:7",
            "parameters": {
              "id": 5341,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5338,
                  "mutability": "mutable",
                  "name": "json",
                  "nameLocation": "1633:4:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 5360,
                  "src": "1619:18:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5337,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1619:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5340,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "1653:3:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 5360,
                  "src": "1639:17:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5339,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1639:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1618:39:7"
            },
            "returnParameters": {
              "id": 5345,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5344,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 5360,
                  "src": "1676:15:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                    "typeString": "string[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5342,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "1676:6:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    },
                    "id": 5343,
                    "nodeType": "ArrayTypeName",
                    "src": "1676:8:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                      "typeString": "string[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1675:17:7"
            },
            "scope": 5499,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 5382,
            "nodeType": "FunctionDefinition",
            "src": "1770:157:7",
            "body": {
              "id": 5381,
              "nodeType": "Block",
              "src": "1857:70:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 5373,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5362,
                            "src": "1898:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 5374,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5364,
                            "src": "1904:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 5371,
                            "name": "vm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5160,
                            "src": "1885:2:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_VmSafe_$7990",
                              "typeString": "contract VmSafe"
                            }
                          },
                          "id": 5372,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "1888:9:7",
                          "memberName": "parseJson",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7962,
                          "src": "1885:12:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory,string memory) external returns (bytes memory)"
                          }
                        },
                        "id": 5375,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1885:23:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 5377,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1911:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 5376,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1911:7:7",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 5378,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "1910:9:7",
                        "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": 5369,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "1874:3:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 5370,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "1878:6:7",
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "1874:10:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 5379,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1874:46:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "functionReturnParameters": 5368,
                  "id": 5380,
                  "nodeType": "Return",
                  "src": "1867:53:7"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readAddress",
            "nameLocation": "1779:11:7",
            "parameters": {
              "id": 5365,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5362,
                  "mutability": "mutable",
                  "name": "json",
                  "nameLocation": "1805:4:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 5382,
                  "src": "1791:18:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5361,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1791:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5364,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "1825:3:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 5382,
                  "src": "1811:17:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5363,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1811:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1790:39:7"
            },
            "returnParameters": {
              "id": 5368,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5367,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 5382,
                  "src": "1848:7:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5366,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1848:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1847:9:7"
            },
            "scope": 5499,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 5406,
            "nodeType": "FunctionDefinition",
            "src": "1933:173:7",
            "body": {
              "id": 5405,
              "nodeType": "Block",
              "src": "2034:72:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 5396,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5384,
                            "src": "2075:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 5397,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5386,
                            "src": "2081:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 5394,
                            "name": "vm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5160,
                            "src": "2062:2:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_VmSafe_$7990",
                              "typeString": "contract VmSafe"
                            }
                          },
                          "id": 5395,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "2065:9:7",
                          "memberName": "parseJson",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7962,
                          "src": "2062:12:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory,string memory) external returns (bytes memory)"
                          }
                        },
                        "id": 5398,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2062:23:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "baseExpression": {
                              "id": 5400,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2088:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 5399,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2088:7:7",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5401,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2088:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "type(address[] memory)"
                            }
                          }
                        ],
                        "id": 5402,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "2087:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_array$_t_address_$dyn_memory_ptr_$",
                          "typeString": "type(address[] memory)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_array$_t_address_$dyn_memory_ptr_$",
                          "typeString": "type(address[] memory)"
                        }
                      ],
                      "expression": {
                        "id": 5392,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "2051:3:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 5393,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "2055:6:7",
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "2051:10:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 5403,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2051:48:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 5391,
                  "id": 5404,
                  "nodeType": "Return",
                  "src": "2044:55:7"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readAddressArray",
            "nameLocation": "1942:16:7",
            "parameters": {
              "id": 5387,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5384,
                  "mutability": "mutable",
                  "name": "json",
                  "nameLocation": "1973:4:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 5406,
                  "src": "1959:18:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5383,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1959:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5386,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "1993:3:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 5406,
                  "src": "1979:17:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5385,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1979:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1958:39:7"
            },
            "returnParameters": {
              "id": 5391,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5390,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 5406,
                  "src": "2016:16:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5388,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2016:7:7",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 5389,
                    "nodeType": "ArrayTypeName",
                    "src": "2016:9:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2015:18:7"
            },
            "scope": 5499,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 5428,
            "nodeType": "FunctionDefinition",
            "src": "2112:148:7",
            "body": {
              "id": 5427,
              "nodeType": "Block",
              "src": "2193:67:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 5419,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5408,
                            "src": "2234:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 5420,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5410,
                            "src": "2240:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 5417,
                            "name": "vm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5160,
                            "src": "2221:2:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_VmSafe_$7990",
                              "typeString": "contract VmSafe"
                            }
                          },
                          "id": 5418,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "2224:9:7",
                          "memberName": "parseJson",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7962,
                          "src": "2221:12:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory,string memory) external returns (bytes memory)"
                          }
                        },
                        "id": 5421,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2221:23:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 5423,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2247:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bool_$",
                              "typeString": "type(bool)"
                            },
                            "typeName": {
                              "id": 5422,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2247:4:7",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 5424,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "2246:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bool_$",
                          "typeString": "type(bool)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_bool_$",
                          "typeString": "type(bool)"
                        }
                      ],
                      "expression": {
                        "id": 5415,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "2210:3:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 5416,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "2214:6:7",
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "2210:10:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 5425,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2210:43:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5414,
                  "id": 5426,
                  "nodeType": "Return",
                  "src": "2203:50:7"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readBool",
            "nameLocation": "2121:8:7",
            "parameters": {
              "id": 5411,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5408,
                  "mutability": "mutable",
                  "name": "json",
                  "nameLocation": "2144:4:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 5428,
                  "src": "2130:18:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5407,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2130:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5410,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "2164:3:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 5428,
                  "src": "2150:17:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5409,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2150:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2129:39:7"
            },
            "returnParameters": {
              "id": 5414,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5413,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 5428,
                  "src": "2187:4:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5412,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2187:4:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2186:6:7"
            },
            "scope": 5499,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 5452,
            "nodeType": "FunctionDefinition",
            "src": "2266:164:7",
            "body": {
              "id": 5451,
              "nodeType": "Block",
              "src": "2361:69:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 5442,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5430,
                            "src": "2402:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 5443,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5432,
                            "src": "2408:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 5440,
                            "name": "vm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5160,
                            "src": "2389:2:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_VmSafe_$7990",
                              "typeString": "contract VmSafe"
                            }
                          },
                          "id": 5441,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "2392:9:7",
                          "memberName": "parseJson",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7962,
                          "src": "2389:12:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory,string memory) external returns (bytes memory)"
                          }
                        },
                        "id": 5444,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2389:23:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "baseExpression": {
                              "id": 5446,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2415:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bool_$",
                                "typeString": "type(bool)"
                              },
                              "typeName": {
                                "id": 5445,
                                "name": "bool",
                                "nodeType": "ElementaryTypeName",
                                "src": "2415:4:7",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5447,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2415:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_array$_t_bool_$dyn_memory_ptr_$",
                              "typeString": "type(bool[] memory)"
                            }
                          }
                        ],
                        "id": 5448,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "2414:8:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_array$_t_bool_$dyn_memory_ptr_$",
                          "typeString": "type(bool[] memory)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_array$_t_bool_$dyn_memory_ptr_$",
                          "typeString": "type(bool[] memory)"
                        }
                      ],
                      "expression": {
                        "id": 5438,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "2378:3:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 5439,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "2382:6:7",
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "2378:10:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 5449,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2378:45:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                      "typeString": "bool[] memory"
                    }
                  },
                  "functionReturnParameters": 5437,
                  "id": 5450,
                  "nodeType": "Return",
                  "src": "2371:52:7"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readBoolArray",
            "nameLocation": "2275:13:7",
            "parameters": {
              "id": 5433,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5430,
                  "mutability": "mutable",
                  "name": "json",
                  "nameLocation": "2303:4:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 5452,
                  "src": "2289:18:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5429,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2289:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5432,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "2323:3:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 5452,
                  "src": "2309:17:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5431,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2309:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2288:39:7"
            },
            "returnParameters": {
              "id": 5437,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5436,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 5452,
                  "src": "2346:13:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                    "typeString": "bool[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5434,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "2346:4:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 5435,
                    "nodeType": "ArrayTypeName",
                    "src": "2346:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                      "typeString": "bool[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2345:15:7"
            },
            "scope": 5499,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 5474,
            "nodeType": "FunctionDefinition",
            "src": "2436:158:7",
            "body": {
              "id": 5473,
              "nodeType": "Block",
              "src": "2526:68:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 5465,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5454,
                            "src": "2567:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 5466,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5456,
                            "src": "2573:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 5463,
                            "name": "vm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5160,
                            "src": "2554:2:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_VmSafe_$7990",
                              "typeString": "contract VmSafe"
                            }
                          },
                          "id": 5464,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "2557:9:7",
                          "memberName": "parseJson",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7962,
                          "src": "2554:12:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory,string memory) external returns (bytes memory)"
                          }
                        },
                        "id": 5467,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2554:23:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 5469,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2580:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": {
                              "id": 5468,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2580:5:7",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 5470,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "2579:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                          "typeString": "type(bytes storage pointer)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                          "typeString": "type(bytes storage pointer)"
                        }
                      ],
                      "expression": {
                        "id": 5461,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "2543:3:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 5462,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "2547:6:7",
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "2543:10:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 5471,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2543:44:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 5460,
                  "id": 5472,
                  "nodeType": "Return",
                  "src": "2536:51:7"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readBytes",
            "nameLocation": "2445:9:7",
            "parameters": {
              "id": 5457,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5454,
                  "mutability": "mutable",
                  "name": "json",
                  "nameLocation": "2469:4:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 5474,
                  "src": "2455:18:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5453,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2455:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5456,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "2489:3:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 5474,
                  "src": "2475:17:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5455,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2475:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2454:39:7"
            },
            "returnParameters": {
              "id": 5460,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5459,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 5474,
                  "src": "2512:12:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5458,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2512:5:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2511:14:7"
            },
            "scope": 5499,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 5498,
            "nodeType": "FunctionDefinition",
            "src": "2600:167:7",
            "body": {
              "id": 5497,
              "nodeType": "Block",
              "src": "2697:70:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 5488,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5476,
                            "src": "2738:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 5489,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5478,
                            "src": "2744:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 5486,
                            "name": "vm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5160,
                            "src": "2725:2:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_VmSafe_$7990",
                              "typeString": "contract VmSafe"
                            }
                          },
                          "id": 5487,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "2728:9:7",
                          "memberName": "parseJson",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7962,
                          "src": "2725:12:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory,string memory) external returns (bytes memory)"
                          }
                        },
                        "id": 5490,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2725:23:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "baseExpression": {
                              "id": 5492,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2751:5:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                "typeString": "type(bytes storage pointer)"
                              },
                              "typeName": {
                                "id": 5491,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "2751:5:7",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5493,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2751:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "type(bytes memory[] memory)"
                            }
                          }
                        ],
                        "id": 5494,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "2750:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$",
                          "typeString": "type(bytes memory[] memory)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$",
                          "typeString": "type(bytes memory[] memory)"
                        }
                      ],
                      "expression": {
                        "id": 5484,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "2714:3:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 5485,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "2718:6:7",
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "2714:10:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 5495,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2714:46:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                      "typeString": "bytes memory[] memory"
                    }
                  },
                  "functionReturnParameters": 5483,
                  "id": 5496,
                  "nodeType": "Return",
                  "src": "2707:53:7"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readBytesArray",
            "nameLocation": "2609:14:7",
            "parameters": {
              "id": 5479,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5476,
                  "mutability": "mutable",
                  "name": "json",
                  "nameLocation": "2638:4:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 5498,
                  "src": "2624:18:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5475,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2624:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5478,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "2658:3:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 5498,
                  "src": "2644:17:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5477,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2644:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2623:39:7"
            },
            "returnParameters": {
              "id": 5483,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5482,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 5498,
                  "src": "2681:14:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                    "typeString": "bytes[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5480,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "2681:5:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "id": 5481,
                    "nodeType": "ArrayTypeName",
                    "src": "2681:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                      "typeString": "bytes[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2680:16:7"
            },
            "scope": 5499,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "stdJson",
        "contractDependencies": [],
        "contractKind": "library",
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          5499
        ],
        "name": "stdJson",
        "nameLocation": "168:7:7",
        "scope": 5500,
        "usedErrors": []
      }
    ],
    "license": "MIT"
  },
  "id": 7
}