{
  "abi": [],
  "bytecode": {
    "object": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122023c8f86933f7b64c0d73d209a690898b764d07ab39a3c2657db5c188e832443f64736f6c63430008160033",
    "sourceMap": "830:5374:8:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;830:5374:8;;;;;;;;;;;;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122023c8f86933f7b64c0d73d209a690898b764d07ab39a3c2657db5c188e832443f64736f6c63430008160033",
    "sourceMap": "830:5374:8:-:0;;;;;;;;",
    "linkReferences": {}
  },
  "methodIdentifiers": {},
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdJson.sol\":\"stdJson\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c\",\"dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.22+commit.4fc1097e"
    },
    "language": "Solidity",
    "output": {
      "abi": [],
      "devdoc": {
        "kind": "dev",
        "methods": {},
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {},
        "version": 1
      }
    },
    "settings": {
      "remappings": [
        "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
        "@uniswap/v3-core/=lib_uniswap/v3-core/",
        "@uniswap/v3-periphery/=lib_uniswap/v3-periphery/",
        "ds-test/=lib/forge-std/lib/ds-test/src/",
        "forge-std/=lib/forge-std/src/",
        "openzeppelin-contracts/=lib/openzeppelin-contracts/",
        "v3-core/=lib_uniswap/v3-core/",
        "v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/"
      ],
      "optimizer": {
        "runs": 999999999,
        "details": {
          "peephole": true,
          "inliner": true,
          "jumpdestRemover": true,
          "orderLiterals": true,
          "deduplicate": true,
          "cse": true,
          "constantOptimizer": true,
          "yul": true,
          "yulDetails": {
            "stackAllocation": true,
            "optimizerSteps": "dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu"
          }
        }
      },
      "metadata": {
        "bytecodeHash": "ipfs"
      },
      "compilationTarget": {
        "lib/forge-std/src/StdJson.sol": "stdJson"
      },
      "libraries": {}
    },
    "sources": {
      "lib/forge-std/src/StdJson.sol": {
        "keccak256": "0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b",
        "urls": [
          "bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c",
          "dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"
        ],
        "license": "MIT"
      },
      "lib/forge-std/src/Vm.sol": {
        "keccak256": "0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5",
        "urls": [
          "bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c",
          "dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw"
        ],
        "license": "MIT"
      }
    },
    "version": 1
  },
  "ast": {
    "absolutePath": "lib/forge-std/src/StdJson.sol",
    "id": 8201,
    "exportedSymbols": {
      "VmSafe": [
        12992
      ],
      "stdJson": [
        8200
      ]
    },
    "nodeType": "SourceUnit",
    "src": "32:6173:8",
    "nodes": [
      {
        "id": 7626,
        "nodeType": "PragmaDirective",
        "src": "32:31:8",
        "nodes": [],
        "literals": [
          "solidity",
          ">=",
          "0.6",
          ".0",
          "<",
          "0.9",
          ".0"
        ]
      },
      {
        "id": 7627,
        "nodeType": "PragmaDirective",
        "src": "65:33:8",
        "nodes": [],
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ]
      },
      {
        "id": 7629,
        "nodeType": "ImportDirective",
        "src": "100:32:8",
        "nodes": [],
        "absolutePath": "lib/forge-std/src/Vm.sol",
        "file": "./Vm.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 8201,
        "sourceUnit": 13465,
        "symbolAliases": [
          {
            "foreign": {
              "id": 7628,
              "name": "VmSafe",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 12992,
              "src": "108:6:8",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 8200,
        "nodeType": "ContractDefinition",
        "src": "830:5374:8",
        "nodes": [
          {
            "id": 7646,
            "nodeType": "VariableDeclaration",
            "src": "852:92:8",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "vm",
            "nameLocation": "876:2:8",
            "scope": 8200,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_VmSafe_$12992",
              "typeString": "contract VmSafe"
            },
            "typeName": {
              "id": 7631,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 7630,
                "name": "VmSafe",
                "nameLocations": [
                  "852:6:8"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 12992,
                "src": "852:6:8"
              },
              "referencedDeclaration": 12992,
              "src": "852:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_VmSafe_$12992",
                "typeString": "contract VmSafe"
              }
            },
            "value": {
              "arguments": [
                {
                  "arguments": [
                    {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6865766d20636865617420636f6465",
                                  "id": 7640,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "922:17:8",
                                  "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": 7639,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "912:9:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 7641,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "912:28:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 7638,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "904:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 7637,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "904:7:8",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 7642,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "904:37:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 7636,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "896:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint160_$",
                          "typeString": "type(uint160)"
                        },
                        "typeName": {
                          "id": 7635,
                          "name": "uint160",
                          "nodeType": "ElementaryTypeName",
                          "src": "896:7:8",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 7643,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "896:46:8",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    ],
                    "id": 7634,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "nodeType": "ElementaryTypeNameExpression",
                    "src": "888:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_address_$",
                      "typeString": "type(address)"
                    },
                    "typeName": {
                      "id": 7633,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "888:7:8",
                      "typeDescriptions": {}
                    }
                  },
                  "id": 7644,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "typeConversion",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "888:55:8",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                ],
                "id": 7632,
                "name": "VmSafe",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 12992,
                "src": "881:6:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_contract$_VmSafe_$12992_$",
                  "typeString": "type(contract VmSafe)"
                }
              },
              "id": 7645,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "nameLocations": [],
              "names": [],
              "nodeType": "FunctionCall",
              "src": "881:63:8",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_VmSafe_$12992",
                "typeString": "contract VmSafe"
              }
            },
            "visibility": "private"
          },
          {
            "id": 7662,
            "nodeType": "FunctionDefinition",
            "src": "951:141:8",
            "nodes": [],
            "body": {
              "id": 7661,
              "nodeType": "Block",
              "src": "1045:47:8",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 7657,
                        "name": "json",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7648,
                        "src": "1075:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 7658,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7650,
                        "src": "1081:3:8",
                        "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": 7655,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7646,
                        "src": "1062:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VmSafe_$12992",
                          "typeString": "contract VmSafe"
                        }
                      },
                      "id": 7656,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1065:9:8",
                      "memberName": "parseJson",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12629,
                      "src": "1062:12:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_pure$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (string memory,string memory) pure external returns (bytes memory)"
                      }
                    },
                    "id": 7659,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1062:23:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 7654,
                  "id": 7660,
                  "nodeType": "Return",
                  "src": "1055:30:8"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "parseRaw",
            "nameLocation": "960:8:8",
            "parameters": {
              "id": 7651,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7648,
                  "mutability": "mutable",
                  "name": "json",
                  "nameLocation": "983:4:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7662,
                  "src": "969:18:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7647,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "969:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7650,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "1003:3:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7662,
                  "src": "989:17:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7649,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "989:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "968:39:8"
            },
            "returnParameters": {
              "id": 7654,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7653,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7662,
                  "src": "1031:12:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7652,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1031:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1030:14:8"
            },
            "scope": 8200,
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 7678,
            "nodeType": "FunctionDefinition",
            "src": "1098:135:8",
            "nodes": [],
            "body": {
              "id": 7677,
              "nodeType": "Block",
              "src": "1182:51:8",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 7673,
                        "name": "json",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7664,
                        "src": "1216:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 7674,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7666,
                        "src": "1222:3:8",
                        "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": 7671,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7646,
                        "src": "1199:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VmSafe_$12992",
                          "typeString": "contract VmSafe"
                        }
                      },
                      "id": 7672,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1202:13:8",
                      "memberName": "parseJsonUint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12645,
                      "src": "1199:16:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_uint256_$",
                        "typeString": "function (string memory,string memory) external returns (uint256)"
                      }
                    },
                    "id": 7675,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1199:27:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 7670,
                  "id": 7676,
                  "nodeType": "Return",
                  "src": "1192:34:8"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readUint",
            "nameLocation": "1107:8:8",
            "parameters": {
              "id": 7667,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7664,
                  "mutability": "mutable",
                  "name": "json",
                  "nameLocation": "1130:4:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7678,
                  "src": "1116:18:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7663,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1116:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7666,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "1150:3:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7678,
                  "src": "1136:17:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7665,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1136:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1115:39:8"
            },
            "returnParameters": {
              "id": 7670,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7669,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7678,
                  "src": "1173:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7668,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1173:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1172:9:8"
            },
            "scope": 8200,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 7695,
            "nodeType": "FunctionDefinition",
            "src": "1239:154:8",
            "nodes": [],
            "body": {
              "id": 7694,
              "nodeType": "Block",
              "src": "1337:56:8",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 7690,
                        "name": "json",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7680,
                        "src": "1376:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 7691,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7682,
                        "src": "1382:3:8",
                        "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": 7688,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7646,
                        "src": "1354:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VmSafe_$12992",
                          "typeString": "contract VmSafe"
                        }
                      },
                      "id": 7689,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1357:18:8",
                      "memberName": "parseJsonUintArray",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12655,
                      "src": "1354:21:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (string memory,string memory) external returns (uint256[] memory)"
                      }
                    },
                    "id": 7692,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1354:32:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "functionReturnParameters": 7687,
                  "id": 7693,
                  "nodeType": "Return",
                  "src": "1347:39:8"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readUintArray",
            "nameLocation": "1248:13:8",
            "parameters": {
              "id": 7683,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7680,
                  "mutability": "mutable",
                  "name": "json",
                  "nameLocation": "1276:4:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7695,
                  "src": "1262:18:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7679,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1262:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7682,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "1296:3:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7695,
                  "src": "1282:17:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7681,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1282:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1261:39:8"
            },
            "returnParameters": {
              "id": 7687,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7686,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7695,
                  "src": "1319:16:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7684,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1319:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 7685,
                    "nodeType": "ArrayTypeName",
                    "src": "1319:9:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1318:18:8"
            },
            "scope": 8200,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 7711,
            "nodeType": "FunctionDefinition",
            "src": "1399:132:8",
            "nodes": [],
            "body": {
              "id": 7710,
              "nodeType": "Block",
              "src": "1481:50:8",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 7706,
                        "name": "json",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7697,
                        "src": "1514:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 7707,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7699,
                        "src": "1520:3:8",
                        "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": 7704,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7646,
                        "src": "1498:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VmSafe_$12992",
                          "typeString": "contract VmSafe"
                        }
                      },
                      "id": 7705,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1501:12:8",
                      "memberName": "parseJsonInt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12664,
                      "src": "1498:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_int256_$",
                        "typeString": "function (string memory,string memory) external returns (int256)"
                      }
                    },
                    "id": 7708,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1498:26:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 7703,
                  "id": 7709,
                  "nodeType": "Return",
                  "src": "1491:33:8"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readInt",
            "nameLocation": "1408:7:8",
            "parameters": {
              "id": 7700,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7697,
                  "mutability": "mutable",
                  "name": "json",
                  "nameLocation": "1430:4:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7711,
                  "src": "1416:18:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7696,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1416:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7699,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "1450:3:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7711,
                  "src": "1436:17:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7698,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1436:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1415:39:8"
            },
            "returnParameters": {
              "id": 7703,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7702,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7711,
                  "src": "1473:6:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 7701,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1473:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1472:8:8"
            },
            "scope": 8200,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 7728,
            "nodeType": "FunctionDefinition",
            "src": "1537:151:8",
            "nodes": [],
            "body": {
              "id": 7727,
              "nodeType": "Block",
              "src": "1633:55:8",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 7723,
                        "name": "json",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7713,
                        "src": "1671:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 7724,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7715,
                        "src": "1677:3:8",
                        "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": 7721,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7646,
                        "src": "1650:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VmSafe_$12992",
                          "typeString": "contract VmSafe"
                        }
                      },
                      "id": 7722,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1653:17:8",
                      "memberName": "parseJsonIntArray",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12674,
                      "src": "1650:20:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_array$_t_int256_$dyn_memory_ptr_$",
                        "typeString": "function (string memory,string memory) external returns (int256[] memory)"
                      }
                    },
                    "id": 7725,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1650:31:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_int256_$dyn_memory_ptr",
                      "typeString": "int256[] memory"
                    }
                  },
                  "functionReturnParameters": 7720,
                  "id": 7726,
                  "nodeType": "Return",
                  "src": "1643:38:8"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readIntArray",
            "nameLocation": "1546:12:8",
            "parameters": {
              "id": 7716,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7713,
                  "mutability": "mutable",
                  "name": "json",
                  "nameLocation": "1573:4:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7728,
                  "src": "1559:18:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7712,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1559:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7715,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "1593:3:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7728,
                  "src": "1579:17:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7714,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1579:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1558:39:8"
            },
            "returnParameters": {
              "id": 7720,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7719,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7728,
                  "src": "1616:15:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_int256_$dyn_memory_ptr",
                    "typeString": "int256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7717,
                      "name": "int256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1616:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "id": 7718,
                    "nodeType": "ArrayTypeName",
                    "src": "1616:8:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_int256_$dyn_storage_ptr",
                      "typeString": "int256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1615:17:8"
            },
            "scope": 8200,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 7744,
            "nodeType": "FunctionDefinition",
            "src": "1694:141:8",
            "nodes": [],
            "body": {
              "id": 7743,
              "nodeType": "Block",
              "src": "1781:54:8",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 7739,
                        "name": "json",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7730,
                        "src": "1818:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 7740,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7732,
                        "src": "1824:3:8",
                        "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": 7737,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7646,
                        "src": "1798:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VmSafe_$12992",
                          "typeString": "contract VmSafe"
                        }
                      },
                      "id": 7738,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1801:16:8",
                      "memberName": "parseJsonBytes32",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12759,
                      "src": "1798:19:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (string memory,string memory) external returns (bytes32)"
                      }
                    },
                    "id": 7741,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1798:30:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 7736,
                  "id": 7742,
                  "nodeType": "Return",
                  "src": "1791:37:8"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readBytes32",
            "nameLocation": "1703:11:8",
            "parameters": {
              "id": 7733,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7730,
                  "mutability": "mutable",
                  "name": "json",
                  "nameLocation": "1729:4:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7744,
                  "src": "1715:18:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7729,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1715:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7732,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "1749:3:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7744,
                  "src": "1735:17:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7731,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1735:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1714:39:8"
            },
            "returnParameters": {
              "id": 7736,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7735,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7744,
                  "src": "1772:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 7734,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1772:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1771:9:8"
            },
            "scope": 8200,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 7761,
            "nodeType": "FunctionDefinition",
            "src": "1841:160:8",
            "nodes": [],
            "body": {
              "id": 7760,
              "nodeType": "Block",
              "src": "1942:59:8",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 7756,
                        "name": "json",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7746,
                        "src": "1984:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 7757,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7748,
                        "src": "1990:3:8",
                        "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": 7754,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7646,
                        "src": "1959:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VmSafe_$12992",
                          "typeString": "contract VmSafe"
                        }
                      },
                      "id": 7755,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1962:21:8",
                      "memberName": "parseJsonBytes32Array",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12769,
                      "src": "1959:24:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                        "typeString": "function (string memory,string memory) external returns (bytes32[] memory)"
                      }
                    },
                    "id": 7758,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1959:35:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 7753,
                  "id": 7759,
                  "nodeType": "Return",
                  "src": "1952:42:8"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readBytes32Array",
            "nameLocation": "1850:16:8",
            "parameters": {
              "id": 7749,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7746,
                  "mutability": "mutable",
                  "name": "json",
                  "nameLocation": "1881:4:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7761,
                  "src": "1867:18:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7745,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1867:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7748,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "1901:3:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7761,
                  "src": "1887:17:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7747,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1887:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1866:39:8"
            },
            "returnParameters": {
              "id": 7753,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7752,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7761,
                  "src": "1924:16:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7750,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1924:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 7751,
                    "nodeType": "ArrayTypeName",
                    "src": "1924:9:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1923:18:8"
            },
            "scope": 8200,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 7777,
            "nodeType": "FunctionDefinition",
            "src": "2007:145:8",
            "nodes": [],
            "body": {
              "id": 7776,
              "nodeType": "Block",
              "src": "2099:53:8",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 7772,
                        "name": "json",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7763,
                        "src": "2135:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 7773,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7765,
                        "src": "2141:3:8",
                        "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": 7770,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7646,
                        "src": "2116:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VmSafe_$12992",
                          "typeString": "contract VmSafe"
                        }
                      },
                      "id": 7771,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2119:15:8",
                      "memberName": "parseJsonString",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12721,
                      "src": "2116:18:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,string memory) external returns (string memory)"
                      }
                    },
                    "id": 7774,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2116:29:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 7769,
                  "id": 7775,
                  "nodeType": "Return",
                  "src": "2109:36:8"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readString",
            "nameLocation": "2016:10:8",
            "parameters": {
              "id": 7766,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7763,
                  "mutability": "mutable",
                  "name": "json",
                  "nameLocation": "2041:4:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7777,
                  "src": "2027:18:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7762,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2027:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7765,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "2061:3:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7777,
                  "src": "2047:17:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7764,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2047:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2026:39:8"
            },
            "returnParameters": {
              "id": 7769,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7768,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7777,
                  "src": "2084:13:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7767,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2084:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2083:15:8"
            },
            "scope": 8200,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 7794,
            "nodeType": "FunctionDefinition",
            "src": "2158:157:8",
            "nodes": [],
            "body": {
              "id": 7793,
              "nodeType": "Block",
              "src": "2257:58:8",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 7789,
                        "name": "json",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7779,
                        "src": "2298:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 7790,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7781,
                        "src": "2304:3:8",
                        "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": 7787,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7646,
                        "src": "2274:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VmSafe_$12992",
                          "typeString": "contract VmSafe"
                        }
                      },
                      "id": 7788,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2277:20:8",
                      "memberName": "parseJsonStringArray",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12731,
                      "src": "2274:23:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$",
                        "typeString": "function (string memory,string memory) external returns (string memory[] memory)"
                      }
                    },
                    "id": 7791,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2274:34:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                      "typeString": "string memory[] memory"
                    }
                  },
                  "functionReturnParameters": 7786,
                  "id": 7792,
                  "nodeType": "Return",
                  "src": "2267:41:8"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readStringArray",
            "nameLocation": "2167:15:8",
            "parameters": {
              "id": 7782,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7779,
                  "mutability": "mutable",
                  "name": "json",
                  "nameLocation": "2197:4:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7794,
                  "src": "2183:18:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7778,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2183:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7781,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "2217:3:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7794,
                  "src": "2203:17:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7780,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2203:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2182:39:8"
            },
            "returnParameters": {
              "id": 7786,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7785,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7794,
                  "src": "2240:15:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                    "typeString": "string[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7783,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "2240:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    },
                    "id": 7784,
                    "nodeType": "ArrayTypeName",
                    "src": "2240:8:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                      "typeString": "string[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2239:17:8"
            },
            "scope": 8200,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 7810,
            "nodeType": "FunctionDefinition",
            "src": "2321:141:8",
            "nodes": [],
            "body": {
              "id": 7809,
              "nodeType": "Block",
              "src": "2408:54:8",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 7805,
                        "name": "json",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7796,
                        "src": "2445:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 7806,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7798,
                        "src": "2451:3:8",
                        "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": 7803,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7646,
                        "src": "2425:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VmSafe_$12992",
                          "typeString": "contract VmSafe"
                        }
                      },
                      "id": 7804,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2428:16:8",
                      "memberName": "parseJsonAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12702,
                      "src": "2425:19:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_address_$",
                        "typeString": "function (string memory,string memory) external returns (address)"
                      }
                    },
                    "id": 7807,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2425:30:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 7802,
                  "id": 7808,
                  "nodeType": "Return",
                  "src": "2418:37:8"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readAddress",
            "nameLocation": "2330:11:8",
            "parameters": {
              "id": 7799,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7796,
                  "mutability": "mutable",
                  "name": "json",
                  "nameLocation": "2356:4:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7810,
                  "src": "2342:18:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7795,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2342:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7798,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "2376:3:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7810,
                  "src": "2362:17:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7797,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2362:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2341:39:8"
            },
            "returnParameters": {
              "id": 7802,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7801,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7810,
                  "src": "2399:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7800,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2399:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2398:9:8"
            },
            "scope": 8200,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 7827,
            "nodeType": "FunctionDefinition",
            "src": "2468:160:8",
            "nodes": [],
            "body": {
              "id": 7826,
              "nodeType": "Block",
              "src": "2569:59:8",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 7822,
                        "name": "json",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7812,
                        "src": "2611:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 7823,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7814,
                        "src": "2617:3:8",
                        "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": 7820,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7646,
                        "src": "2586:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VmSafe_$12992",
                          "typeString": "contract VmSafe"
                        }
                      },
                      "id": 7821,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2589:21:8",
                      "memberName": "parseJsonAddressArray",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12712,
                      "src": "2586:24:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function (string memory,string memory) external returns (address[] memory)"
                      }
                    },
                    "id": 7824,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2586:35:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 7819,
                  "id": 7825,
                  "nodeType": "Return",
                  "src": "2579:42:8"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readAddressArray",
            "nameLocation": "2477:16:8",
            "parameters": {
              "id": 7815,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7812,
                  "mutability": "mutable",
                  "name": "json",
                  "nameLocation": "2508:4:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7827,
                  "src": "2494:18:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7811,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2494:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7814,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "2528:3:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7827,
                  "src": "2514:17:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7813,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2514:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2493:39:8"
            },
            "returnParameters": {
              "id": 7819,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7818,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7827,
                  "src": "2551:16:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7816,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2551:7:8",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 7817,
                    "nodeType": "ArrayTypeName",
                    "src": "2551:9:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2550:18:8"
            },
            "scope": 8200,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 7843,
            "nodeType": "FunctionDefinition",
            "src": "2634:132:8",
            "nodes": [],
            "body": {
              "id": 7842,
              "nodeType": "Block",
              "src": "2715:51:8",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 7838,
                        "name": "json",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7829,
                        "src": "2749:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 7839,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7831,
                        "src": "2755:3:8",
                        "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": 7836,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7646,
                        "src": "2732:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VmSafe_$12992",
                          "typeString": "contract VmSafe"
                        }
                      },
                      "id": 7837,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2735:13:8",
                      "memberName": "parseJsonBool",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12683,
                      "src": "2732:16:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bool_$",
                        "typeString": "function (string memory,string memory) external returns (bool)"
                      }
                    },
                    "id": 7840,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2732:27:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 7835,
                  "id": 7841,
                  "nodeType": "Return",
                  "src": "2725:34:8"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readBool",
            "nameLocation": "2643:8:8",
            "parameters": {
              "id": 7832,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7829,
                  "mutability": "mutable",
                  "name": "json",
                  "nameLocation": "2666:4:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7843,
                  "src": "2652:18:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7828,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2652:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7831,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "2686:3:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7843,
                  "src": "2672:17:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7830,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2672:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2651:39:8"
            },
            "returnParameters": {
              "id": 7835,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7834,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7843,
                  "src": "2709:4:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7833,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2709:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2708:6:8"
            },
            "scope": 8200,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 7860,
            "nodeType": "FunctionDefinition",
            "src": "2772:151:8",
            "nodes": [],
            "body": {
              "id": 7859,
              "nodeType": "Block",
              "src": "2867:56:8",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 7855,
                        "name": "json",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7845,
                        "src": "2906:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 7856,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7847,
                        "src": "2912:3:8",
                        "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": 7853,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7646,
                        "src": "2884:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VmSafe_$12992",
                          "typeString": "contract VmSafe"
                        }
                      },
                      "id": 7854,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2887:18:8",
                      "memberName": "parseJsonBoolArray",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12693,
                      "src": "2884:21:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_array$_t_bool_$dyn_memory_ptr_$",
                        "typeString": "function (string memory,string memory) external returns (bool[] memory)"
                      }
                    },
                    "id": 7857,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2884:32:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                      "typeString": "bool[] memory"
                    }
                  },
                  "functionReturnParameters": 7852,
                  "id": 7858,
                  "nodeType": "Return",
                  "src": "2877:39:8"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readBoolArray",
            "nameLocation": "2781:13:8",
            "parameters": {
              "id": 7848,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7845,
                  "mutability": "mutable",
                  "name": "json",
                  "nameLocation": "2809:4:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7860,
                  "src": "2795:18:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7844,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2795:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7847,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "2829:3:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7860,
                  "src": "2815:17:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7846,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2815:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2794:39:8"
            },
            "returnParameters": {
              "id": 7852,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7851,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7860,
                  "src": "2852:13:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                    "typeString": "bool[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7849,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "2852:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 7850,
                    "nodeType": "ArrayTypeName",
                    "src": "2852:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                      "typeString": "bool[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2851:15:8"
            },
            "scope": 8200,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 7876,
            "nodeType": "FunctionDefinition",
            "src": "2929:142:8",
            "nodes": [],
            "body": {
              "id": 7875,
              "nodeType": "Block",
              "src": "3019:52:8",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 7871,
                        "name": "json",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7862,
                        "src": "3054:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 7872,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7864,
                        "src": "3060:3:8",
                        "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": 7869,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7646,
                        "src": "3036:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VmSafe_$12992",
                          "typeString": "contract VmSafe"
                        }
                      },
                      "id": 7870,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3039:14:8",
                      "memberName": "parseJsonBytes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12740,
                      "src": "3036:17:8",
                      "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": 7873,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3036:28:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 7868,
                  "id": 7874,
                  "nodeType": "Return",
                  "src": "3029:35:8"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readBytes",
            "nameLocation": "2938:9:8",
            "parameters": {
              "id": 7865,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7862,
                  "mutability": "mutable",
                  "name": "json",
                  "nameLocation": "2962:4:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7876,
                  "src": "2948:18:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7861,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2948:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7864,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "2982:3:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7876,
                  "src": "2968:17:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7863,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2968:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2947:39:8"
            },
            "returnParameters": {
              "id": 7868,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7867,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7876,
                  "src": "3005:12:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7866,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3005:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3004:14:8"
            },
            "scope": 8200,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 7893,
            "nodeType": "FunctionDefinition",
            "src": "3077:154:8",
            "nodes": [],
            "body": {
              "id": 7892,
              "nodeType": "Block",
              "src": "3174:57:8",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 7888,
                        "name": "json",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7878,
                        "src": "3214:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 7889,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7880,
                        "src": "3220:3:8",
                        "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": 7886,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7646,
                        "src": "3191:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VmSafe_$12992",
                          "typeString": "contract VmSafe"
                        }
                      },
                      "id": 7887,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3194:19:8",
                      "memberName": "parseJsonBytesArray",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12750,
                      "src": "3191:22:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$",
                        "typeString": "function (string memory,string memory) external returns (bytes memory[] memory)"
                      }
                    },
                    "id": 7890,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3191:33:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                      "typeString": "bytes memory[] memory"
                    }
                  },
                  "functionReturnParameters": 7885,
                  "id": 7891,
                  "nodeType": "Return",
                  "src": "3184:40:8"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readBytesArray",
            "nameLocation": "3086:14:8",
            "parameters": {
              "id": 7881,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7878,
                  "mutability": "mutable",
                  "name": "json",
                  "nameLocation": "3115:4:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7893,
                  "src": "3101:18:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7877,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3101:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7880,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "3135:3:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7893,
                  "src": "3121:17:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7879,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3121:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3100:39:8"
            },
            "returnParameters": {
              "id": 7885,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7884,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7893,
                  "src": "3158:14:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                    "typeString": "bytes[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7882,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "3158:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "id": 7883,
                    "nodeType": "ArrayTypeName",
                    "src": "3158:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                      "typeString": "bytes[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3157:16:8"
            },
            "scope": 8200,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 7912,
            "nodeType": "FunctionDefinition",
            "src": "3237:167:8",
            "nodes": [],
            "body": {
              "id": 7911,
              "nodeType": "Block",
              "src": "3343:61:8",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 7906,
                        "name": "jsonKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7895,
                        "src": "3377:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 7907,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7897,
                        "src": "3386:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 7908,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7899,
                        "src": "3391:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "expression": {
                        "id": 7904,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7646,
                        "src": "3360:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VmSafe_$12992",
                          "typeString": "contract VmSafe"
                        }
                      },
                      "id": 7905,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3363:13:8",
                      "memberName": "serializeBool",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12780,
                      "src": "3360:16:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_bool_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,string memory,bool) external returns (string memory)"
                      }
                    },
                    "id": 7909,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3360:37:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 7903,
                  "id": 7910,
                  "nodeType": "Return",
                  "src": "3353:44:8"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "serialize",
            "nameLocation": "3246:9:8",
            "parameters": {
              "id": 7900,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7895,
                  "mutability": "mutable",
                  "name": "jsonKey",
                  "nameLocation": "3270:7:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7912,
                  "src": "3256:21:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7894,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3256:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7897,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "3293:3:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7912,
                  "src": "3279:17:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7896,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3279:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7899,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "3303:5:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7912,
                  "src": "3298:10:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7898,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3298:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3255:54:8"
            },
            "returnParameters": {
              "id": 7903,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7902,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7912,
                  "src": "3328:13:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7901,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3328:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3327:15:8"
            },
            "scope": 8200,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 7932,
            "nodeType": "FunctionDefinition",
            "src": "3410:196:8",
            "nodes": [],
            "body": {
              "id": 7931,
              "nodeType": "Block",
              "src": "3545:61:8",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 7926,
                        "name": "jsonKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7914,
                        "src": "3579:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 7927,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7916,
                        "src": "3588:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 7928,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7919,
                        "src": "3593:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                          "typeString": "bool[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                          "typeString": "bool[] memory"
                        }
                      ],
                      "expression": {
                        "id": 7924,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7646,
                        "src": "3562:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VmSafe_$12992",
                          "typeString": "contract VmSafe"
                        }
                      },
                      "id": 7925,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3565:13:8",
                      "memberName": "serializeBool",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12858,
                      "src": "3562:16:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_array$_t_bool_$dyn_memory_ptr_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,string memory,bool[] memory) external returns (string memory)"
                      }
                    },
                    "id": 7929,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3562:37:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 7923,
                  "id": 7930,
                  "nodeType": "Return",
                  "src": "3555:44:8"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "serialize",
            "nameLocation": "3419:9:8",
            "parameters": {
              "id": 7920,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7914,
                  "mutability": "mutable",
                  "name": "jsonKey",
                  "nameLocation": "3443:7:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7932,
                  "src": "3429:21:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7913,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3429:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7916,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "3466:3:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7932,
                  "src": "3452:17:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7915,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3452:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7919,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "3485:5:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7932,
                  "src": "3471:19:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                    "typeString": "bool[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7917,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "3471:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 7918,
                    "nodeType": "ArrayTypeName",
                    "src": "3471:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                      "typeString": "bool[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3428:63:8"
            },
            "returnParameters": {
              "id": 7923,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7922,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7932,
                  "src": "3526:13:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7921,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3526:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3525:15:8"
            },
            "scope": 8200,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 7951,
            "nodeType": "FunctionDefinition",
            "src": "3612:170:8",
            "nodes": [],
            "body": {
              "id": 7950,
              "nodeType": "Block",
              "src": "3721:61:8",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 7945,
                        "name": "jsonKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7934,
                        "src": "3755:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 7946,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7936,
                        "src": "3764:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 7947,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7938,
                        "src": "3769:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 7943,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7646,
                        "src": "3738:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VmSafe_$12992",
                          "typeString": "contract VmSafe"
                        }
                      },
                      "id": 7944,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3741:13:8",
                      "memberName": "serializeUint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12791,
                      "src": "3738:16:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,string memory,uint256) external returns (string memory)"
                      }
                    },
                    "id": 7948,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3738:37:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 7942,
                  "id": 7949,
                  "nodeType": "Return",
                  "src": "3731:44:8"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "serialize",
            "nameLocation": "3621:9:8",
            "parameters": {
              "id": 7939,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7934,
                  "mutability": "mutable",
                  "name": "jsonKey",
                  "nameLocation": "3645:7:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7951,
                  "src": "3631:21:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7933,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3631:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7936,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "3668:3:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7951,
                  "src": "3654:17:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7935,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3654:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7938,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "3681:5:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7951,
                  "src": "3673:13:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7937,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3673:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3630:57:8"
            },
            "returnParameters": {
              "id": 7942,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7941,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7951,
                  "src": "3706:13:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7940,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3706:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3705:15:8"
            },
            "scope": 8200,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 7971,
            "nodeType": "FunctionDefinition",
            "src": "3788:199:8",
            "nodes": [],
            "body": {
              "id": 7970,
              "nodeType": "Block",
              "src": "3926:61:8",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 7965,
                        "name": "jsonKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7953,
                        "src": "3960:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 7966,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7955,
                        "src": "3969:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 7967,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7958,
                        "src": "3974:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      ],
                      "expression": {
                        "id": 7963,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7646,
                        "src": "3943:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VmSafe_$12992",
                          "typeString": "contract VmSafe"
                        }
                      },
                      "id": 7964,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3946:13:8",
                      "memberName": "serializeUint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12870,
                      "src": "3943:16:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,string memory,uint256[] memory) external returns (string memory)"
                      }
                    },
                    "id": 7968,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3943:37:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 7962,
                  "id": 7969,
                  "nodeType": "Return",
                  "src": "3936:44:8"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "serialize",
            "nameLocation": "3797:9:8",
            "parameters": {
              "id": 7959,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7953,
                  "mutability": "mutable",
                  "name": "jsonKey",
                  "nameLocation": "3821:7:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7971,
                  "src": "3807:21:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7952,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3807:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7955,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "3844:3:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7971,
                  "src": "3830:17:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7954,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3830:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7958,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "3866:5:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7971,
                  "src": "3849:22:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7956,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3849:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 7957,
                    "nodeType": "ArrayTypeName",
                    "src": "3849:9:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3806:66:8"
            },
            "returnParameters": {
              "id": 7962,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7961,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7971,
                  "src": "3907:13:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7960,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3907:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3906:15:8"
            },
            "scope": 8200,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 7990,
            "nodeType": "FunctionDefinition",
            "src": "3993:168:8",
            "nodes": [],
            "body": {
              "id": 7989,
              "nodeType": "Block",
              "src": "4101:60:8",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 7984,
                        "name": "jsonKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7973,
                        "src": "4134:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 7985,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7975,
                        "src": "4143:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 7986,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7977,
                        "src": "4148:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      ],
                      "expression": {
                        "id": 7982,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7646,
                        "src": "4118:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VmSafe_$12992",
                          "typeString": "contract VmSafe"
                        }
                      },
                      "id": 7983,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "4121:12:8",
                      "memberName": "serializeInt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12802,
                      "src": "4118:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_int256_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,string memory,int256) external returns (string memory)"
                      }
                    },
                    "id": 7987,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4118:36:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 7981,
                  "id": 7988,
                  "nodeType": "Return",
                  "src": "4111:43:8"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "serialize",
            "nameLocation": "4002:9:8",
            "parameters": {
              "id": 7978,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7973,
                  "mutability": "mutable",
                  "name": "jsonKey",
                  "nameLocation": "4026:7:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7990,
                  "src": "4012:21:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7972,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4012:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7975,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "4049:3:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7990,
                  "src": "4035:17:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7974,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4035:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7977,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "4061:5:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 7990,
                  "src": "4054:12:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 7976,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4054:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4011:56:8"
            },
            "returnParameters": {
              "id": 7981,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7980,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7990,
                  "src": "4086:13:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7979,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4086:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4085:15:8"
            },
            "scope": 8200,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 8010,
            "nodeType": "FunctionDefinition",
            "src": "4167:197:8",
            "nodes": [],
            "body": {
              "id": 8009,
              "nodeType": "Block",
              "src": "4304:60:8",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8004,
                        "name": "jsonKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7992,
                        "src": "4337:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 8005,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7994,
                        "src": "4346:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 8006,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7997,
                        "src": "4351:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_int256_$dyn_memory_ptr",
                          "typeString": "int256[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_int256_$dyn_memory_ptr",
                          "typeString": "int256[] memory"
                        }
                      ],
                      "expression": {
                        "id": 8002,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7646,
                        "src": "4321:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VmSafe_$12992",
                          "typeString": "contract VmSafe"
                        }
                      },
                      "id": 8003,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "4324:12:8",
                      "memberName": "serializeInt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12882,
                      "src": "4321:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_array$_t_int256_$dyn_memory_ptr_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,string memory,int256[] memory) external returns (string memory)"
                      }
                    },
                    "id": 8007,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4321:36:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 8001,
                  "id": 8008,
                  "nodeType": "Return",
                  "src": "4314:43:8"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "serialize",
            "nameLocation": "4176:9:8",
            "parameters": {
              "id": 7998,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7992,
                  "mutability": "mutable",
                  "name": "jsonKey",
                  "nameLocation": "4200:7:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 8010,
                  "src": "4186:21:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7991,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4186:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7994,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "4223:3:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 8010,
                  "src": "4209:17:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7993,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4209:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7997,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "4244:5:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 8010,
                  "src": "4228:21:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_int256_$dyn_memory_ptr",
                    "typeString": "int256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7995,
                      "name": "int256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4228:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "id": 7996,
                    "nodeType": "ArrayTypeName",
                    "src": "4228:8:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_int256_$dyn_storage_ptr",
                      "typeString": "int256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4185:65:8"
            },
            "returnParameters": {
              "id": 8001,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8000,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 8010,
                  "src": "4285:13:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7999,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4285:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4284:15:8"
            },
            "scope": 8200,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 8029,
            "nodeType": "FunctionDefinition",
            "src": "4370:173:8",
            "nodes": [],
            "body": {
              "id": 8028,
              "nodeType": "Block",
              "src": "4479:64:8",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8023,
                        "name": "jsonKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8012,
                        "src": "4516:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 8024,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8014,
                        "src": "4525:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 8025,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8016,
                        "src": "4530:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 8021,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7646,
                        "src": "4496:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VmSafe_$12992",
                          "typeString": "contract VmSafe"
                        }
                      },
                      "id": 8022,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "4499:16:8",
                      "memberName": "serializeAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12813,
                      "src": "4496:19:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,string memory,address) external returns (string memory)"
                      }
                    },
                    "id": 8026,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4496:40:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 8020,
                  "id": 8027,
                  "nodeType": "Return",
                  "src": "4489:47:8"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "serialize",
            "nameLocation": "4379:9:8",
            "parameters": {
              "id": 8017,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8012,
                  "mutability": "mutable",
                  "name": "jsonKey",
                  "nameLocation": "4403:7:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 8029,
                  "src": "4389:21:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8011,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4389:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8014,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "4426:3:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 8029,
                  "src": "4412:17:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8013,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4412:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8016,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "4439:5:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 8029,
                  "src": "4431:13:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8015,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4431:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4388:57:8"
            },
            "returnParameters": {
              "id": 8020,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8019,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 8029,
                  "src": "4464:13:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8018,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4464:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4463:15:8"
            },
            "scope": 8200,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 8049,
            "nodeType": "FunctionDefinition",
            "src": "4549:202:8",
            "nodes": [],
            "body": {
              "id": 8048,
              "nodeType": "Block",
              "src": "4687:64:8",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8043,
                        "name": "jsonKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8031,
                        "src": "4724:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 8044,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8033,
                        "src": "4733:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 8045,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8036,
                        "src": "4738:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      ],
                      "expression": {
                        "id": 8041,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7646,
                        "src": "4704:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VmSafe_$12992",
                          "typeString": "contract VmSafe"
                        }
                      },
                      "id": 8042,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "4707:16:8",
                      "memberName": "serializeAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12894,
                      "src": "4704:19:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,string memory,address[] memory) external returns (string memory)"
                      }
                    },
                    "id": 8046,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4704:40:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 8040,
                  "id": 8047,
                  "nodeType": "Return",
                  "src": "4697:47:8"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "serialize",
            "nameLocation": "4558:9:8",
            "parameters": {
              "id": 8037,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8031,
                  "mutability": "mutable",
                  "name": "jsonKey",
                  "nameLocation": "4582:7:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 8049,
                  "src": "4568:21:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8030,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4568:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8033,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "4605:3:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 8049,
                  "src": "4591:17:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8032,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4591:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8036,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "4627:5:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 8049,
                  "src": "4610:22:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 8034,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "4610:7:8",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 8035,
                    "nodeType": "ArrayTypeName",
                    "src": "4610:9:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4567:66:8"
            },
            "returnParameters": {
              "id": 8040,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8039,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 8049,
                  "src": "4668:13:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8038,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4668:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4667:15:8"
            },
            "scope": 8200,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 8068,
            "nodeType": "FunctionDefinition",
            "src": "4757:173:8",
            "nodes": [],
            "body": {
              "id": 8067,
              "nodeType": "Block",
              "src": "4866:64:8",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8062,
                        "name": "jsonKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8051,
                        "src": "4903:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 8063,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8053,
                        "src": "4912:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 8064,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8055,
                        "src": "4917:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 8060,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7646,
                        "src": "4883:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VmSafe_$12992",
                          "typeString": "contract VmSafe"
                        }
                      },
                      "id": 8061,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "4886:16:8",
                      "memberName": "serializeBytes32",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12824,
                      "src": "4883:19:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_bytes32_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,string memory,bytes32) external returns (string memory)"
                      }
                    },
                    "id": 8065,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4883:40:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 8059,
                  "id": 8066,
                  "nodeType": "Return",
                  "src": "4876:47:8"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "serialize",
            "nameLocation": "4766:9:8",
            "parameters": {
              "id": 8056,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8051,
                  "mutability": "mutable",
                  "name": "jsonKey",
                  "nameLocation": "4790:7:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 8068,
                  "src": "4776:21:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8050,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4776:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8053,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "4813:3:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 8068,
                  "src": "4799:17:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8052,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4799:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8055,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "4826:5:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 8068,
                  "src": "4818:13:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8054,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4818:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4775:57:8"
            },
            "returnParameters": {
              "id": 8059,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8058,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 8068,
                  "src": "4851:13:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8057,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4851:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4850:15:8"
            },
            "scope": 8200,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 8088,
            "nodeType": "FunctionDefinition",
            "src": "4936:202:8",
            "nodes": [],
            "body": {
              "id": 8087,
              "nodeType": "Block",
              "src": "5074:64:8",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8082,
                        "name": "jsonKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8070,
                        "src": "5111:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 8083,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8072,
                        "src": "5120:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 8084,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8075,
                        "src": "5125:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      ],
                      "expression": {
                        "id": 8080,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7646,
                        "src": "5091:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VmSafe_$12992",
                          "typeString": "contract VmSafe"
                        }
                      },
                      "id": 8081,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5094:16:8",
                      "memberName": "serializeBytes32",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12906,
                      "src": "5091:19:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,string memory,bytes32[] memory) external returns (string memory)"
                      }
                    },
                    "id": 8085,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5091:40:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 8079,
                  "id": 8086,
                  "nodeType": "Return",
                  "src": "5084:47:8"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "serialize",
            "nameLocation": "4945:9:8",
            "parameters": {
              "id": 8076,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8070,
                  "mutability": "mutable",
                  "name": "jsonKey",
                  "nameLocation": "4969:7:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 8088,
                  "src": "4955:21:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8069,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4955:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8072,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "4992:3:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 8088,
                  "src": "4978:17:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8071,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4978:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8075,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "5014:5:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 8088,
                  "src": "4997:22:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 8073,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "4997:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 8074,
                    "nodeType": "ArrayTypeName",
                    "src": "4997:9:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4954:66:8"
            },
            "returnParameters": {
              "id": 8079,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8078,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 8088,
                  "src": "5055:13:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8077,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5055:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5054:15:8"
            },
            "scope": 8200,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 8107,
            "nodeType": "FunctionDefinition",
            "src": "5144:176:8",
            "nodes": [],
            "body": {
              "id": 8106,
              "nodeType": "Block",
              "src": "5258:62:8",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8101,
                        "name": "jsonKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8090,
                        "src": "5293:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 8102,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8092,
                        "src": "5302:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 8103,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8094,
                        "src": "5307:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 8099,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7646,
                        "src": "5275:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VmSafe_$12992",
                          "typeString": "contract VmSafe"
                        }
                      },
                      "id": 8100,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5278:14:8",
                      "memberName": "serializeBytes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12846,
                      "src": "5275:17:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,string memory,bytes memory) external returns (string memory)"
                      }
                    },
                    "id": 8104,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5275:38:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 8098,
                  "id": 8105,
                  "nodeType": "Return",
                  "src": "5268:45:8"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "serialize",
            "nameLocation": "5153:9:8",
            "parameters": {
              "id": 8095,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8090,
                  "mutability": "mutable",
                  "name": "jsonKey",
                  "nameLocation": "5177:7:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 8107,
                  "src": "5163:21:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8089,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5163:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8092,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "5200:3:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 8107,
                  "src": "5186:17:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8091,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5186:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8094,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "5218:5:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 8107,
                  "src": "5205:18:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 8093,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5205:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5162:62:8"
            },
            "returnParameters": {
              "id": 8098,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8097,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 8107,
                  "src": "5243:13:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8096,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5243:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5242:15:8"
            },
            "scope": 8200,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 8127,
            "nodeType": "FunctionDefinition",
            "src": "5326:198:8",
            "nodes": [],
            "body": {
              "id": 8126,
              "nodeType": "Block",
              "src": "5462:62:8",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8121,
                        "name": "jsonKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8109,
                        "src": "5497:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 8122,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8111,
                        "src": "5506:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 8123,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8114,
                        "src": "5511:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes memory[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes memory[] memory"
                        }
                      ],
                      "expression": {
                        "id": 8119,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7646,
                        "src": "5479:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VmSafe_$12992",
                          "typeString": "contract VmSafe"
                        }
                      },
                      "id": 8120,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5482:14:8",
                      "memberName": "serializeBytes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12930,
                      "src": "5479:17:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,string memory,bytes memory[] memory) external returns (string memory)"
                      }
                    },
                    "id": 8124,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5479:38:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 8118,
                  "id": 8125,
                  "nodeType": "Return",
                  "src": "5472:45:8"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "serialize",
            "nameLocation": "5335:9:8",
            "parameters": {
              "id": 8115,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8109,
                  "mutability": "mutable",
                  "name": "jsonKey",
                  "nameLocation": "5359:7:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 8127,
                  "src": "5345:21:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8108,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5345:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8111,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "5382:3:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 8127,
                  "src": "5368:17:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8110,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5368:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8114,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "5402:5:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 8127,
                  "src": "5387:20:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                    "typeString": "bytes[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 8112,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "5387:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "id": 8113,
                    "nodeType": "ArrayTypeName",
                    "src": "5387:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                      "typeString": "bytes[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5344:64:8"
            },
            "returnParameters": {
              "id": 8118,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8117,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 8127,
                  "src": "5443:13:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8116,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5443:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5442:15:8"
            },
            "scope": 8200,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 8146,
            "nodeType": "FunctionDefinition",
            "src": "5530:198:8",
            "nodes": [],
            "body": {
              "id": 8145,
              "nodeType": "Block",
              "src": "5665:63:8",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8140,
                        "name": "jsonKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8129,
                        "src": "5701:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 8141,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8131,
                        "src": "5710:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 8142,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8133,
                        "src": "5715:5:8",
                        "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"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "id": 8138,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7646,
                        "src": "5682:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VmSafe_$12992",
                          "typeString": "contract VmSafe"
                        }
                      },
                      "id": 8139,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5685:15:8",
                      "memberName": "serializeString",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12835,
                      "src": "5682:18:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,string memory,string memory) external returns (string memory)"
                      }
                    },
                    "id": 8143,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5682:39:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 8137,
                  "id": 8144,
                  "nodeType": "Return",
                  "src": "5675:46:8"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "serialize",
            "nameLocation": "5539:9:8",
            "parameters": {
              "id": 8134,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8129,
                  "mutability": "mutable",
                  "name": "jsonKey",
                  "nameLocation": "5563:7:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 8146,
                  "src": "5549:21:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8128,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5549:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8131,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "5586:3:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 8146,
                  "src": "5572:17:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8130,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5572:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8133,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "5605:5:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 8146,
                  "src": "5591:19:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8132,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5591:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5548:63:8"
            },
            "returnParameters": {
              "id": 8137,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8136,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 8146,
                  "src": "5646:13:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8135,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5646:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5645:15:8"
            },
            "scope": 8200,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 8166,
            "nodeType": "FunctionDefinition",
            "src": "5734:200:8",
            "nodes": [],
            "body": {
              "id": 8165,
              "nodeType": "Block",
              "src": "5871:63:8",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8160,
                        "name": "jsonKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8148,
                        "src": "5907:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 8161,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8150,
                        "src": "5916:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 8162,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8153,
                        "src": "5921:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                          "typeString": "string memory[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                          "typeString": "string memory[] memory"
                        }
                      ],
                      "expression": {
                        "id": 8158,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7646,
                        "src": "5888:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VmSafe_$12992",
                          "typeString": "contract VmSafe"
                        }
                      },
                      "id": 8159,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5891:15:8",
                      "memberName": "serializeString",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12918,
                      "src": "5888:18:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,string memory,string memory[] memory) external returns (string memory)"
                      }
                    },
                    "id": 8163,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5888:39:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 8157,
                  "id": 8164,
                  "nodeType": "Return",
                  "src": "5881:46:8"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "serialize",
            "nameLocation": "5743:9:8",
            "parameters": {
              "id": 8154,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8148,
                  "mutability": "mutable",
                  "name": "jsonKey",
                  "nameLocation": "5767:7:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 8166,
                  "src": "5753:21:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8147,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5753:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8150,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "5790:3:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 8166,
                  "src": "5776:17:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8149,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5776:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8153,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "5811:5:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 8166,
                  "src": "5795:21:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                    "typeString": "string[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 8151,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "5795:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    },
                    "id": 8152,
                    "nodeType": "ArrayTypeName",
                    "src": "5795:8:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                      "typeString": "string[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5752:65:8"
            },
            "returnParameters": {
              "id": 8157,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8156,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 8166,
                  "src": "5852:13:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8155,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5852:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5851:15:8"
            },
            "scope": 8200,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 8181,
            "nodeType": "FunctionDefinition",
            "src": "5940:111:8",
            "nodes": [],
            "body": {
              "id": 8180,
              "nodeType": "Block",
              "src": "6007:44:8",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8176,
                        "name": "jsonKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8168,
                        "src": "6030:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 8177,
                        "name": "path",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8170,
                        "src": "6039:4:8",
                        "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": 8173,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7646,
                        "src": "6017:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VmSafe_$12992",
                          "typeString": "contract VmSafe"
                        }
                      },
                      "id": 8175,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "6020:9:8",
                      "memberName": "writeJson",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12937,
                      "src": "6017:12:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory,string memory) external"
                      }
                    },
                    "id": 8178,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6017:27:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8179,
                  "nodeType": "ExpressionStatement",
                  "src": "6017:27:8"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "write",
            "nameLocation": "5949:5:8",
            "parameters": {
              "id": 8171,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8168,
                  "mutability": "mutable",
                  "name": "jsonKey",
                  "nameLocation": "5969:7:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 8181,
                  "src": "5955:21:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8167,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5955:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8170,
                  "mutability": "mutable",
                  "name": "path",
                  "nameLocation": "5992:4:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 8181,
                  "src": "5978:18:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8169,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5978:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5954:43:8"
            },
            "returnParameters": {
              "id": 8172,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6007:0:8"
            },
            "scope": 8200,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 8199,
            "nodeType": "FunctionDefinition",
            "src": "6057:145:8",
            "nodes": [],
            "body": {
              "id": 8198,
              "nodeType": "Block",
              "src": "6148:54:8",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8193,
                        "name": "jsonKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8183,
                        "src": "6171:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 8194,
                        "name": "path",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8185,
                        "src": "6180:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 8195,
                        "name": "valueKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8187,
                        "src": "6186:8:8",
                        "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"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "id": 8190,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7646,
                        "src": "6158:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VmSafe_$12992",
                          "typeString": "contract VmSafe"
                        }
                      },
                      "id": 8192,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "6161:9:8",
                      "memberName": "writeJson",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12946,
                      "src": "6158:12:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory,string memory,string memory) external"
                      }
                    },
                    "id": 8196,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6158:37:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8197,
                  "nodeType": "ExpressionStatement",
                  "src": "6158:37:8"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "write",
            "nameLocation": "6066:5:8",
            "parameters": {
              "id": 8188,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8183,
                  "mutability": "mutable",
                  "name": "jsonKey",
                  "nameLocation": "6086:7:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 8199,
                  "src": "6072:21:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8182,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6072:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8185,
                  "mutability": "mutable",
                  "name": "path",
                  "nameLocation": "6109:4:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 8199,
                  "src": "6095:18:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8184,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6095:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8187,
                  "mutability": "mutable",
                  "name": "valueKey",
                  "nameLocation": "6129:8:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 8199,
                  "src": "6115:22:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8186,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6115:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6071:67:8"
            },
            "returnParameters": {
              "id": 8189,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6148:0:8"
            },
            "scope": 8200,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "stdJson",
        "contractDependencies": [],
        "contractKind": "library",
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          8200
        ],
        "name": "stdJson",
        "nameLocation": "838:7:8",
        "scope": 8201,
        "usedErrors": [],
        "usedEvents": []
      }
    ],
    "license": "MIT"
  },
  "id": 8
}