{
  "abi": [],
  "bytecode": {
    "object": "0x",
    "sourceMap": "",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x",
    "sourceMap": "",
    "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/Base.sol\":\"CommonBase\"},\"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/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26\",\"dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c\",\"dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.22+commit.4fc1097e"
    },
    "language": "Solidity",
    "output": {
      "abi": [],
      "devdoc": {
        "kind": "dev",
        "methods": {},
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {},
        "version": 1
      }
    },
    "settings": {
      "remappings": [
        "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
        "@uniswap/v3-core/=lib_uniswap/v3-core/",
        "@uniswap/v3-periphery/=lib_uniswap/v3-periphery/",
        "ds-test/=lib/forge-std/lib/ds-test/src/",
        "forge-std/=lib/forge-std/src/",
        "openzeppelin-contracts/=lib/openzeppelin-contracts/",
        "v3-core/=lib_uniswap/v3-core/",
        "v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/"
      ],
      "optimizer": {
        "runs": 999999999,
        "details": {
          "peephole": true,
          "inliner": true,
          "jumpdestRemover": true,
          "orderLiterals": true,
          "deduplicate": true,
          "cse": true,
          "constantOptimizer": true,
          "yul": true,
          "yulDetails": {
            "stackAllocation": true,
            "optimizerSteps": "dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu"
          }
        }
      },
      "metadata": {
        "bytecodeHash": "ipfs"
      },
      "compilationTarget": {
        "lib/forge-std/src/Base.sol": "CommonBase"
      },
      "libraries": {}
    },
    "sources": {
      "lib/forge-std/src/Base.sol": {
        "keccak256": "0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c",
        "urls": [
          "bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224",
          "dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"
        ],
        "license": "MIT"
      },
      "lib/forge-std/src/StdStorage.sol": {
        "keccak256": "0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d",
        "urls": [
          "bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26",
          "dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9"
        ],
        "license": "MIT"
      },
      "lib/forge-std/src/Vm.sol": {
        "keccak256": "0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5",
        "urls": [
          "bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c",
          "dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw"
        ],
        "license": "MIT"
      }
    },
    "version": 1
  },
  "ast": {
    "absolutePath": "lib/forge-std/src/Base.sol",
    "id": 2367,
    "exportedSymbols": {
      "CommonBase": [
        2354
      ],
      "ScriptBase": [
        2366
      ],
      "StdStorage": [
        8374
      ],
      "TestBase": [
        2357
      ],
      "Vm": [
        13464
      ],
      "VmSafe": [
        12992
      ]
    },
    "nodeType": "SourceUnit",
    "src": "32:1761:1",
    "nodes": [
      {
        "id": 2293,
        "nodeType": "PragmaDirective",
        "src": "32:31:1",
        "nodes": [],
        "literals": [
          "solidity",
          ">=",
          "0.6",
          ".2",
          "<",
          "0.9",
          ".0"
        ]
      },
      {
        "id": 2295,
        "nodeType": "ImportDirective",
        "src": "65:44:1",
        "nodes": [],
        "absolutePath": "lib/forge-std/src/StdStorage.sol",
        "file": "./StdStorage.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 2367,
        "sourceUnit": 9828,
        "symbolAliases": [
          {
            "foreign": {
              "id": 2294,
              "name": "StdStorage",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 8374,
              "src": "73:10:1",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 2298,
        "nodeType": "ImportDirective",
        "src": "110:36:1",
        "nodes": [],
        "absolutePath": "lib/forge-std/src/Vm.sol",
        "file": "./Vm.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 2367,
        "sourceUnit": 13465,
        "symbolAliases": [
          {
            "foreign": {
              "id": 2296,
              "name": "Vm",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 13464,
              "src": "118:2:1",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          },
          {
            "foreign": {
              "id": 2297,
              "name": "VmSafe",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 12992,
              "src": "122:6:1",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 2354,
        "nodeType": "ContractDefinition",
        "src": "148:1493:1",
        "nodes": [
          {
            "id": 2312,
            "nodeType": "VariableDeclaration",
            "src": "254:94:1",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "VM_ADDRESS",
            "nameLocation": "280:10:1",
            "scope": 2354,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 2299,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "254:7:1",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": {
              "arguments": [
                {
                  "arguments": [
                    {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "hexValue": "6865766d20636865617420636f6465",
                              "id": 2307,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "327:17:1",
                              "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": 2306,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "317:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 2308,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "317:28:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 2305,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "309:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": {
                          "id": 2304,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "309:7:1",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 2309,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "309:37:1",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    ],
                    "id": 2303,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "nodeType": "ElementaryTypeNameExpression",
                    "src": "301:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_uint160_$",
                      "typeString": "type(uint160)"
                    },
                    "typeName": {
                      "id": 2302,
                      "name": "uint160",
                      "nodeType": "ElementaryTypeName",
                      "src": "301:7:1",
                      "typeDescriptions": {}
                    }
                  },
                  "id": 2310,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "typeConversion",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "301:46:1",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  }
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  }
                ],
                "id": 2301,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "ElementaryTypeNameExpression",
                "src": "293:7:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_address_$",
                  "typeString": "type(address)"
                },
                "typeName": {
                  "id": 2300,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "293:7:1",
                  "typeDescriptions": {}
                }
              },
              "id": 2311,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "nameLocations": [],
              "names": [],
              "nodeType": "FunctionCall",
              "src": "293:55:1",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "internal"
          },
          {
            "id": 2315,
            "nodeType": "VariableDeclaration",
            "src": "438:78:1",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "CONSOLE",
            "nameLocation": "464:7:1",
            "scope": 2354,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 2313,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "438:7:1",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": {
              "hexValue": "307830303030303030303030303030303030303036333646366537333646366336353265366336663637",
              "id": 2314,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "474:42:1",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              },
              "value": "0x000000000000000000636F6e736F6c652e6c6f67"
            },
            "visibility": "internal"
          },
          {
            "id": 2318,
            "nodeType": "VariableDeclaration",
            "src": "623:86:1",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "CREATE2_FACTORY",
            "nameLocation": "649:15:1",
            "scope": 2354,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 2316,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "623:7:1",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": {
              "hexValue": "307834653539623434383437623337393537383538383932306341373846624632366330423439353643",
              "id": 2317,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "667:42:1",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              },
              "value": "0x4e59b44847b379578588920cA78FbF26c0B4956C"
            },
            "visibility": "internal"
          },
          {
            "id": 2332,
            "nodeType": "VariableDeclaration",
            "src": "812:105:1",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "DEFAULT_SENDER",
            "nameLocation": "838:14:1",
            "scope": 2354,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 2319,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "812:7:1",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": {
              "arguments": [
                {
                  "arguments": [
                    {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "hexValue": "666f756e6472792064656661756c742063616c6c6572",
                              "id": 2327,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "889:24:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ee6e12ba256a78bc5d3ab9651804c8ab1f12e6bbf3894d4083f33e07309d1f38",
                                "typeString": "literal_string \"foundry default caller\""
                              },
                              "value": "foundry default caller"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_ee6e12ba256a78bc5d3ab9651804c8ab1f12e6bbf3894d4083f33e07309d1f38",
                                "typeString": "literal_string \"foundry default caller\""
                              }
                            ],
                            "id": 2326,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "879:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 2328,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "879:35:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 2325,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "871:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": {
                          "id": 2324,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "871:7:1",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 2329,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "871:44:1",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    ],
                    "id": 2323,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "nodeType": "ElementaryTypeNameExpression",
                    "src": "863:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_uint160_$",
                      "typeString": "type(uint160)"
                    },
                    "typeName": {
                      "id": 2322,
                      "name": "uint160",
                      "nodeType": "ElementaryTypeName",
                      "src": "863:7:1",
                      "typeDescriptions": {}
                    }
                  },
                  "id": 2330,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "typeConversion",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "863:53:1",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  }
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  }
                ],
                "id": 2321,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "ElementaryTypeNameExpression",
                "src": "855:7:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_address_$",
                  "typeString": "type(address)"
                },
                "typeName": {
                  "id": 2320,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "855:7:1",
                  "typeDescriptions": {}
                }
              },
              "id": 2331,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "nameLocations": [],
              "names": [],
              "nodeType": "FunctionCall",
              "src": "855:62:1",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "internal"
          },
          {
            "id": 2335,
            "nodeType": "VariableDeclaration",
            "src": "992:92:1",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "DEFAULT_TEST_CONTRACT",
            "nameLocation": "1018:21:1",
            "scope": 2354,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 2333,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "992:7:1",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": {
              "hexValue": "307835363135644542373938424233453464466130313339644661316233443433334363323362373266",
              "id": 2334,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1042:42:1",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              },
              "value": "0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f"
            },
            "visibility": "internal"
          },
          {
            "id": 2338,
            "nodeType": "VariableDeclaration",
            "src": "1158:89:1",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "MULTICALL3_ADDRESS",
            "nameLocation": "1184:18:1",
            "scope": 2354,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 2336,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1158:7:1",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": {
              "hexValue": "307863413131626465303539373762333633313136373032383836326245326131373339373643413131",
              "id": 2337,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1205:42:1",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              },
              "value": "0xcA11bde05977b3631167028862bE2a173976CA11"
            },
            "visibility": "internal"
          },
          {
            "id": 2341,
            "nodeType": "VariableDeclaration",
            "src": "1294:130:1",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "SECP256K1_ORDER",
            "nameLocation": "1320:15:1",
            "scope": 2354,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2339,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1294:7:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "313135373932303839323337333136313935343233353730393835303038363837393037383532383337353634323739303734393034333832363035313633313431353138313631343934333337",
              "id": 2340,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1346:78:1",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_115792089237316195423570985008687907852837564279074904382605163141518161494337_by_1",
                "typeString": "int_const 1157...(70 digits omitted)...4337"
              },
              "value": "115792089237316195423570985008687907852837564279074904382605163141518161494337"
            },
            "visibility": "internal"
          },
          {
            "id": 2344,
            "nodeType": "VariableDeclaration",
            "src": "1431:126:1",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "UINT256_MAX",
            "nameLocation": "1457:11:1",
            "scope": 2354,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2342,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1431:7:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "313135373932303839323337333136313935343233353730393835303038363837393037383533323639393834363635363430353634303339343537353834303037393133313239363339393335",
              "id": 2343,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1479:78:1",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1",
                "typeString": "int_const 1157...(70 digits omitted)...9935"
              },
              "value": "115792089237316195423570985008687907853269984665640564039457584007913129639935"
            },
            "visibility": "internal"
          },
          {
            "id": 2350,
            "nodeType": "VariableDeclaration",
            "src": "1564:40:1",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "vm",
            "nameLocation": "1585:2:1",
            "scope": 2354,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Vm_$13464",
              "typeString": "contract Vm"
            },
            "typeName": {
              "id": 2346,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 2345,
                "name": "Vm",
                "nameLocations": [
                  "1564:2:1"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 13464,
                "src": "1564:2:1"
              },
              "referencedDeclaration": 13464,
              "src": "1564:2:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Vm_$13464",
                "typeString": "contract Vm"
              }
            },
            "value": {
              "arguments": [
                {
                  "id": 2348,
                  "name": "VM_ADDRESS",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2312,
                  "src": "1593:10:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                ],
                "id": 2347,
                "name": "Vm",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 13464,
                "src": "1590:2:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_contract$_Vm_$13464_$",
                  "typeString": "type(contract Vm)"
                }
              },
              "id": 2349,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "nameLocations": [],
              "names": [],
              "nodeType": "FunctionCall",
              "src": "1590:14:1",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Vm_$13464",
                "typeString": "contract Vm"
              }
            },
            "visibility": "internal"
          },
          {
            "id": 2353,
            "nodeType": "VariableDeclaration",
            "src": "1610:28:1",
            "nodes": [],
            "constant": false,
            "mutability": "mutable",
            "name": "stdstore",
            "nameLocation": "1630:8:1",
            "scope": 2354,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_StdStorage_$8374_storage",
              "typeString": "struct StdStorage"
            },
            "typeName": {
              "id": 2352,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 2351,
                "name": "StdStorage",
                "nameLocations": [
                  "1610:10:1"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 8374,
                "src": "1610:10:1"
              },
              "referencedDeclaration": 8374,
              "src": "1610:10:1",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_StdStorage_$8374_storage_ptr",
                "typeString": "struct StdStorage"
              }
            },
            "visibility": "internal"
          }
        ],
        "abstract": true,
        "baseContracts": [],
        "canonicalName": "CommonBase",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          2354
        ],
        "name": "CommonBase",
        "nameLocation": "166:10:1",
        "scope": 2367,
        "usedErrors": [],
        "usedEvents": []
      },
      {
        "id": 2357,
        "nodeType": "ContractDefinition",
        "src": "1643:43:1",
        "nodes": [],
        "abstract": true,
        "baseContracts": [
          {
            "baseName": {
              "id": 2355,
              "name": "CommonBase",
              "nameLocations": [
                "1673:10:1"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 2354,
              "src": "1673:10:1"
            },
            "id": 2356,
            "nodeType": "InheritanceSpecifier",
            "src": "1673:10:1"
          }
        ],
        "canonicalName": "TestBase",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          2357,
          2354
        ],
        "name": "TestBase",
        "nameLocation": "1661:8:1",
        "scope": 2367,
        "usedErrors": [],
        "usedEvents": []
      },
      {
        "id": 2366,
        "nodeType": "ContractDefinition",
        "src": "1688:104:1",
        "nodes": [
          {
            "id": 2365,
            "nodeType": "VariableDeclaration",
            "src": "1737:52:1",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "vmSafe",
            "nameLocation": "1762:6:1",
            "scope": 2366,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_VmSafe_$12992",
              "typeString": "contract VmSafe"
            },
            "typeName": {
              "id": 2361,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 2360,
                "name": "VmSafe",
                "nameLocations": [
                  "1737:6:1"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 12992,
                "src": "1737:6:1"
              },
              "referencedDeclaration": 12992,
              "src": "1737:6:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_VmSafe_$12992",
                "typeString": "contract VmSafe"
              }
            },
            "value": {
              "arguments": [
                {
                  "id": 2363,
                  "name": "VM_ADDRESS",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2312,
                  "src": "1778:10:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                ],
                "id": 2362,
                "name": "VmSafe",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 12992,
                "src": "1771:6:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_contract$_VmSafe_$12992_$",
                  "typeString": "type(contract VmSafe)"
                }
              },
              "id": 2364,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "nameLocations": [],
              "names": [],
              "nodeType": "FunctionCall",
              "src": "1771:18:1",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_VmSafe_$12992",
                "typeString": "contract VmSafe"
              }
            },
            "visibility": "internal"
          }
        ],
        "abstract": true,
        "baseContracts": [
          {
            "baseName": {
              "id": 2358,
              "name": "CommonBase",
              "nameLocations": [
                "1720:10:1"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 2354,
              "src": "1720:10:1"
            },
            "id": 2359,
            "nodeType": "InheritanceSpecifier",
            "src": "1720:10:1"
          }
        ],
        "canonicalName": "ScriptBase",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          2366,
          2354
        ],
        "name": "ScriptBase",
        "nameLocation": "1706:10:1",
        "scope": 2367,
        "usedErrors": [],
        "usedEvents": []
      }
    ],
    "license": "MIT"
  },
  "id": 1
}