{
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_feeToSetter",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "token0",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "token1",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "pair",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "PairCreated",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "allPairs",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "allPairsLength",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenA",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenB",
          "type": "address"
        }
      ],
      "name": "createPair",
      "outputs": [
        {
          "internalType": "address",
          "name": "pair",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "feeTo",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "feeToSetter",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "getPair",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_feeTo",
          "type": "address"
        }
      ],
      "name": "setFeeTo",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_feeToSetter",
          "type": "address"
        }
      ],
      "name": "setFeeToSetter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "allSourcePaths": {
    "25": "contracts/mock/MockUniswapV2Factory.sol"
  },
  "ast": {
    "absolutePath": "contracts/mock/MockUniswapV2Factory.sol",
    "exportedSymbols": {
      "IUniswapV2Callee": [
        5402
      ],
      "MockUniswapV2Factory": [
        7039
      ],
      "MockUniswapV2FactoryIERC20": [
        5390
      ],
      "MockUniswapV2FactoryIUniswapV2ERC20": [
        5308
      ],
      "MockUniswapV2FactoryIUniswapV2Factory": [
        4952
      ],
      "MockUniswapV2FactoryIUniswapV2Pair": [
        5192
      ],
      "MockUniswapV2FactoryMah": [
        7186
      ],
      "MockUniswapV2FactorySafeMath": [
        7112
      ],
      "MockUniswapV2FactoryUniswapV2Pair": [
        6848
      ],
      "UQ112x112": [
        7228
      ],
      "UniswapV2ERC20": [
        5788
      ]
    },
    "id": 7229,
    "license": null,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 4891,
        "literals": [
          "solidity",
          "0.6",
          ".12"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:25"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 4952,
        "linearizedBaseContracts": [
          4952
        ],
        "name": "MockUniswapV2FactoryIUniswapV2Factory",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 4901,
            "name": "PairCreated",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 4900,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4893,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "token0",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4901,
                  "src": "95:22:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4892,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "95:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4895,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "token1",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4901,
                  "src": "119:22:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4894,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "119:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4897,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "pair",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4901,
                  "src": "143:12:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4896,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "143:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4899,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4901,
                  "src": "157:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4898,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "157:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "94:68:25"
            },
            "src": "77:86:25"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "017e7e58",
            "id": 4906,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "feeTo",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4902,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "181:2:25"
            },
            "returnParameters": {
              "id": 4905,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4904,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4906,
                  "src": "207:7:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4903,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "207:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "206:9:25"
            },
            "scope": 4952,
            "src": "167:49:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "094b7415",
            "id": 4911,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "feeToSetter",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4907,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "240:2:25"
            },
            "returnParameters": {
              "id": 4910,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4909,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4911,
                  "src": "266:7:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4908,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "266:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "265:9:25"
            },
            "scope": 4952,
            "src": "220:55:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "e6a43905",
            "id": 4920,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getPair",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4916,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4913,
                  "mutability": "mutable",
                  "name": "tokenA",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4920,
                  "src": "296:14:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4912,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "296:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4915,
                  "mutability": "mutable",
                  "name": "tokenB",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4920,
                  "src": "312:14:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4914,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "312:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "295:32:25"
            },
            "returnParameters": {
              "id": 4919,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4918,
                  "mutability": "mutable",
                  "name": "pair",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4920,
                  "src": "351:12:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4917,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "351:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "350:14:25"
            },
            "scope": 4952,
            "src": "279:86:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "1e3dd18b",
            "id": 4927,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "allPairs",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4923,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4922,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4927,
                  "src": "387:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4921,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "387:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "386:6:25"
            },
            "returnParameters": {
              "id": 4926,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4925,
                  "mutability": "mutable",
                  "name": "pair",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4927,
                  "src": "416:12:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4924,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "416:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "415:14:25"
            },
            "scope": 4952,
            "src": "369:61:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "574f2ba3",
            "id": 4932,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "allPairsLength",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4928,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "457:2:25"
            },
            "returnParameters": {
              "id": 4931,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4930,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4932,
                  "src": "483:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4929,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "483:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "482:6:25"
            },
            "scope": 4952,
            "src": "434:55:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "c9c65396",
            "id": 4941,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "createPair",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4937,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4934,
                  "mutability": "mutable",
                  "name": "tokenA",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4941,
                  "src": "513:14:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4933,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "513:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4936,
                  "mutability": "mutable",
                  "name": "tokenB",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4941,
                  "src": "529:14:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4935,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "529:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "512:32:25"
            },
            "returnParameters": {
              "id": 4940,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4939,
                  "mutability": "mutable",
                  "name": "pair",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4941,
                  "src": "563:12:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4938,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "563:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "562:14:25"
            },
            "scope": 4952,
            "src": "493:84:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "f46901ed",
            "id": 4946,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setFeeTo",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4944,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4943,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4946,
                  "src": "599:7:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4942,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "599:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "598:9:25"
            },
            "returnParameters": {
              "id": 4945,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "616:0:25"
            },
            "scope": 4952,
            "src": "581:36:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "a2e74af6",
            "id": 4951,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setFeeToSetter",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4949,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4948,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4951,
                  "src": "645:7:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4947,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "645:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "644:9:25"
            },
            "returnParameters": {
              "id": 4950,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "662:0:25"
            },
            "scope": 4952,
            "src": "621:42:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 7229,
        "src": "25:640:25"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 5192,
        "linearizedBaseContracts": [
          5192
        ],
        "name": "MockUniswapV2FactoryIUniswapV2Pair",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 4960,
            "name": "Approval",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 4959,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4954,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4960,
                  "src": "731:21:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4953,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "731:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4956,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "spender",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4960,
                  "src": "754:23:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4955,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "754:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4958,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4960,
                  "src": "779:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4957,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "779:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "730:60:25"
            },
            "src": "716:75:25"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 4968,
            "name": "Transfer",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 4967,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4962,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4968,
                  "src": "809:20:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4961,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "809:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4964,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4968,
                  "src": "831:18:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4963,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "831:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4966,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4968,
                  "src": "851:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4965,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "851:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "808:54:25"
            },
            "src": "794:69:25"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "06fdde03",
            "id": 4973,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "name",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4969,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "880:2:25"
            },
            "returnParameters": {
              "id": 4972,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4971,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4973,
                  "src": "906:13:25",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4970,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "906:6:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "905:15:25"
            },
            "scope": 5192,
            "src": "867:54:25",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "95d89b41",
            "id": 4978,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "symbol",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4974,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "940:2:25"
            },
            "returnParameters": {
              "id": 4977,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4976,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4978,
                  "src": "966:13:25",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4975,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "966:6:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "965:15:25"
            },
            "scope": 5192,
            "src": "925:56:25",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "313ce567",
            "id": 4983,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "decimals",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4979,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1002:2:25"
            },
            "returnParameters": {
              "id": 4982,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4981,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4983,
                  "src": "1028:5:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 4980,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1028:5:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1027:7:25"
            },
            "scope": 5192,
            "src": "985:50:25",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "18160ddd",
            "id": 4988,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "totalSupply",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4984,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1059:2:25"
            },
            "returnParameters": {
              "id": 4987,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4986,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4988,
                  "src": "1085:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4985,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1085:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1084:6:25"
            },
            "scope": 5192,
            "src": "1039:52:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "70a08231",
            "id": 4995,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "balanceOf",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4991,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4990,
                  "mutability": "mutable",
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4995,
                  "src": "1114:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4989,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1114:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1113:15:25"
            },
            "returnParameters": {
              "id": 4994,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4993,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4995,
                  "src": "1152:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4992,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1152:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1151:6:25"
            },
            "scope": 5192,
            "src": "1095:63:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "dd62ed3e",
            "id": 5004,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "allowance",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5000,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4997,
                  "mutability": "mutable",
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5004,
                  "src": "1181:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4996,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1181:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4999,
                  "mutability": "mutable",
                  "name": "spender",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5004,
                  "src": "1196:15:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4998,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1196:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1180:32:25"
            },
            "returnParameters": {
              "id": 5003,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5002,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5004,
                  "src": "1236:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5001,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1236:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1235:6:25"
            },
            "scope": 5192,
            "src": "1162:80:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "095ea7b3",
            "id": 5013,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "approve",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5009,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5006,
                  "mutability": "mutable",
                  "name": "spender",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5013,
                  "src": "1263:15:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5005,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1263:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5008,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5013,
                  "src": "1280:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5007,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1280:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1262:29:25"
            },
            "returnParameters": {
              "id": 5012,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5011,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5013,
                  "src": "1310:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5010,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1310:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1309:6:25"
            },
            "scope": 5192,
            "src": "1246:70:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "a9059cbb",
            "id": 5022,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "transfer",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5018,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5015,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5022,
                  "src": "1338:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5014,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1338:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5017,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5022,
                  "src": "1350:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5016,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1350:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1337:24:25"
            },
            "returnParameters": {
              "id": 5021,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5020,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5022,
                  "src": "1380:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5019,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1380:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1379:6:25"
            },
            "scope": 5192,
            "src": "1320:66:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "23b872dd",
            "id": 5033,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "transferFrom",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5029,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5024,
                  "mutability": "mutable",
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5033,
                  "src": "1417:12:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5023,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1417:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5026,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5033,
                  "src": "1435:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5025,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1435:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5028,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5033,
                  "src": "1451:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5027,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1451:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1411:54:25"
            },
            "returnParameters": {
              "id": 5032,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5031,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5033,
                  "src": "1484:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5030,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1484:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1483:6:25"
            },
            "scope": 5192,
            "src": "1390:100:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "3644e515",
            "id": 5038,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "DOMAIN_SEPARATOR",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5034,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1519:2:25"
            },
            "returnParameters": {
              "id": 5037,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5036,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5038,
                  "src": "1545:7:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5035,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1545:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1544:9:25"
            },
            "scope": 5192,
            "src": "1494:60:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "30adf81f",
            "id": 5043,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "PERMIT_TYPEHASH",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5039,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1582:2:25"
            },
            "returnParameters": {
              "id": 5042,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5041,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5043,
                  "src": "1608:7:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5040,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1608:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1607:9:25"
            },
            "scope": 5192,
            "src": "1558:59:25",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "7ecebe00",
            "id": 5050,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "nonces",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5046,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5045,
                  "mutability": "mutable",
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5050,
                  "src": "1637:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5044,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1637:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1636:15:25"
            },
            "returnParameters": {
              "id": 5049,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5048,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5050,
                  "src": "1675:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5047,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1675:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1674:6:25"
            },
            "scope": 5192,
            "src": "1621:60:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "d505accf",
            "id": 5067,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "permit",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5065,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5052,
                  "mutability": "mutable",
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5067,
                  "src": "1706:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5051,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1706:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5054,
                  "mutability": "mutable",
                  "name": "spender",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5067,
                  "src": "1725:15:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5053,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1725:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5056,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5067,
                  "src": "1746:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5055,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1746:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5058,
                  "mutability": "mutable",
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5067,
                  "src": "1762:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5057,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1762:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5060,
                  "mutability": "mutable",
                  "name": "v",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5067,
                  "src": "1781:7:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 5059,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1781:5:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5062,
                  "mutability": "mutable",
                  "name": "r",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5067,
                  "src": "1794:9:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5061,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1794:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5064,
                  "mutability": "mutable",
                  "name": "s",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5067,
                  "src": "1809:9:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5063,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1809:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1700:122:25"
            },
            "returnParameters": {
              "id": 5066,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1831:0:25"
            },
            "scope": 5192,
            "src": "1685:147:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 5075,
            "name": "Mint",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5074,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5069,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "sender",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5075,
                  "src": "1847:22:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5068,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1847:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5071,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount0",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5075,
                  "src": "1871:12:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5070,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1871:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5073,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount1",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5075,
                  "src": "1885:12:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5072,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1885:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1846:52:25"
            },
            "src": "1836:63:25"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 5085,
            "name": "Burn",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5084,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5077,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "sender",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5085,
                  "src": "1913:22:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5076,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1913:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5079,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount0",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5085,
                  "src": "1937:12:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5078,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1937:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5081,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount1",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5085,
                  "src": "1951:12:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5080,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1951:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5083,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5085,
                  "src": "1965:18:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5082,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1965:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1912:72:25"
            },
            "src": "1902:83:25"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 5099,
            "name": "Swap",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5098,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5087,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "sender",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5099,
                  "src": "2004:22:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5086,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2004:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5089,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount0In",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5099,
                  "src": "2032:14:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5088,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2032:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5091,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount1In",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5099,
                  "src": "2052:14:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5090,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2052:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5093,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount0Out",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5099,
                  "src": "2072:15:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5092,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2072:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5095,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount1Out",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5099,
                  "src": "2093:15:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5094,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2093:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5097,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5099,
                  "src": "2114:18:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5096,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2114:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1998:138:25"
            },
            "src": "1988:149:25"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 5105,
            "name": "Sync",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5104,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5101,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "reserve0",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5105,
                  "src": "2151:16:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint112",
                    "typeString": "uint112"
                  },
                  "typeName": {
                    "id": 5100,
                    "name": "uint112",
                    "nodeType": "ElementaryTypeName",
                    "src": "2151:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint112",
                      "typeString": "uint112"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5103,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "reserve1",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5105,
                  "src": "2169:16:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint112",
                    "typeString": "uint112"
                  },
                  "typeName": {
                    "id": 5102,
                    "name": "uint112",
                    "nodeType": "ElementaryTypeName",
                    "src": "2169:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint112",
                      "typeString": "uint112"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2150:36:25"
            },
            "src": "2140:47:25"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "ba9a7a56",
            "id": 5110,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "MINIMUM_LIQUIDITY",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5106,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2217:2:25"
            },
            "returnParameters": {
              "id": 5109,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5108,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5110,
                  "src": "2243:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5107,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2243:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2242:6:25"
            },
            "scope": 5192,
            "src": "2191:58:25",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "c45a0155",
            "id": 5115,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "factory",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5111,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2269:2:25"
            },
            "returnParameters": {
              "id": 5114,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5113,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5115,
                  "src": "2295:7:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5112,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2295:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2294:9:25"
            },
            "scope": 5192,
            "src": "2253:51:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "0dfe1681",
            "id": 5120,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "token0",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5116,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2323:2:25"
            },
            "returnParameters": {
              "id": 5119,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5118,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5120,
                  "src": "2349:7:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5117,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2349:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2348:9:25"
            },
            "scope": 5192,
            "src": "2308:50:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "d21220a7",
            "id": 5125,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "token1",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5121,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2377:2:25"
            },
            "returnParameters": {
              "id": 5124,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5123,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5125,
                  "src": "2403:7:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5122,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2403:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2402:9:25"
            },
            "scope": 5192,
            "src": "2362:50:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "0902f1ac",
            "id": 5134,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getReserves",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5126,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2436:2:25"
            },
            "returnParameters": {
              "id": 5133,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5128,
                  "mutability": "mutable",
                  "name": "reserve0",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5134,
                  "src": "2481:16:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint112",
                    "typeString": "uint112"
                  },
                  "typeName": {
                    "id": 5127,
                    "name": "uint112",
                    "nodeType": "ElementaryTypeName",
                    "src": "2481:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint112",
                      "typeString": "uint112"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5130,
                  "mutability": "mutable",
                  "name": "reserve1",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5134,
                  "src": "2505:16:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint112",
                    "typeString": "uint112"
                  },
                  "typeName": {
                    "id": 5129,
                    "name": "uint112",
                    "nodeType": "ElementaryTypeName",
                    "src": "2505:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint112",
                      "typeString": "uint112"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5132,
                  "mutability": "mutable",
                  "name": "blockTimestampLast",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5134,
                  "src": "2529:25:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 5131,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2529:6:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2473:87:25"
            },
            "scope": 5192,
            "src": "2416:145:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "5909c0d5",
            "id": 5139,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "price0CumulativeLast",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5135,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2594:2:25"
            },
            "returnParameters": {
              "id": 5138,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5137,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5139,
                  "src": "2620:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5136,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2620:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2619:6:25"
            },
            "scope": 5192,
            "src": "2565:61:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "5a3d5493",
            "id": 5144,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "price1CumulativeLast",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5140,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2659:2:25"
            },
            "returnParameters": {
              "id": 5143,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5142,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5144,
                  "src": "2685:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5141,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2685:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2684:6:25"
            },
            "scope": 5192,
            "src": "2630:61:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "7464fc3d",
            "id": 5149,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "kLast",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5145,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2709:2:25"
            },
            "returnParameters": {
              "id": 5148,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5147,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5149,
                  "src": "2735:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5146,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2735:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2734:6:25"
            },
            "scope": 5192,
            "src": "2695:46:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "6a627842",
            "id": 5156,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "mint",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5152,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5151,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5156,
                  "src": "2759:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5150,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2759:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2758:12:25"
            },
            "returnParameters": {
              "id": 5155,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5154,
                  "mutability": "mutable",
                  "name": "liquidity",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5156,
                  "src": "2789:14:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5153,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2789:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2788:16:25"
            },
            "scope": 5192,
            "src": "2745:60:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "89afcb44",
            "id": 5165,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "burn",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5159,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5158,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5165,
                  "src": "2823:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5157,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2823:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2822:12:25"
            },
            "returnParameters": {
              "id": 5164,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5161,
                  "mutability": "mutable",
                  "name": "amount0",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5165,
                  "src": "2853:12:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5160,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2853:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5163,
                  "mutability": "mutable",
                  "name": "amount1",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5165,
                  "src": "2867:12:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5162,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2867:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2852:28:25"
            },
            "scope": 5192,
            "src": "2809:72:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "022c0d9f",
            "id": 5176,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "swap",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5174,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5167,
                  "mutability": "mutable",
                  "name": "amount0Out",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5176,
                  "src": "2904:15:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5166,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2904:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5169,
                  "mutability": "mutable",
                  "name": "amount1Out",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5176,
                  "src": "2925:15:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5168,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2925:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5171,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5176,
                  "src": "2946:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5170,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2946:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5173,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5176,
                  "src": "2962:19:25",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5172,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2962:5:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2898:87:25"
            },
            "returnParameters": {
              "id": 5175,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2994:0:25"
            },
            "scope": 5192,
            "src": "2885:110:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "bc25cf77",
            "id": 5181,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "skim",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5179,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5178,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5181,
                  "src": "3013:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5177,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3013:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3012:12:25"
            },
            "returnParameters": {
              "id": 5180,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3033:0:25"
            },
            "scope": 5192,
            "src": "2999:35:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "fff6cae9",
            "id": 5184,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "sync",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5182,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3051:2:25"
            },
            "returnParameters": {
              "id": 5183,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3062:0:25"
            },
            "scope": 5192,
            "src": "3038:25:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "485cc955",
            "id": 5191,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5189,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5186,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5191,
                  "src": "3087:7:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5185,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3087:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5188,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5191,
                  "src": "3096:7:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5187,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3096:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3086:18:25"
            },
            "returnParameters": {
              "id": 5190,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3113:0:25"
            },
            "scope": 5192,
            "src": "3067:47:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 7229,
        "src": "667:2449:25"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 5308,
        "linearizedBaseContracts": [
          5308
        ],
        "name": "MockUniswapV2FactoryIUniswapV2ERC20",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 5200,
            "name": "Approval",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5199,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5194,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5200,
                  "src": "3183:21:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5193,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3183:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5196,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "spender",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5200,
                  "src": "3206:23:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5195,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3206:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5198,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5200,
                  "src": "3231:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5197,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3231:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3182:60:25"
            },
            "src": "3168:75:25"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 5208,
            "name": "Transfer",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5207,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5202,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5208,
                  "src": "3261:20:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5201,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3261:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5204,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5208,
                  "src": "3283:18:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5203,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3283:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5206,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5208,
                  "src": "3303:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5205,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3303:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3260:54:25"
            },
            "src": "3246:69:25"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "06fdde03",
            "id": 5213,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "name",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5209,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3332:2:25"
            },
            "returnParameters": {
              "id": 5212,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5211,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5213,
                  "src": "3358:13:25",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5210,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3358:6:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3357:15:25"
            },
            "scope": 5308,
            "src": "3319:54:25",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "95d89b41",
            "id": 5218,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "symbol",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5214,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3392:2:25"
            },
            "returnParameters": {
              "id": 5217,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5216,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5218,
                  "src": "3418:13:25",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5215,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3418:6:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3417:15:25"
            },
            "scope": 5308,
            "src": "3377:56:25",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "313ce567",
            "id": 5223,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "decimals",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5219,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3454:2:25"
            },
            "returnParameters": {
              "id": 5222,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5221,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5223,
                  "src": "3480:5:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 5220,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "3480:5:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3479:7:25"
            },
            "scope": 5308,
            "src": "3437:50:25",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "18160ddd",
            "id": 5228,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "totalSupply",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5224,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3511:2:25"
            },
            "returnParameters": {
              "id": 5227,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5226,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5228,
                  "src": "3537:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5225,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3537:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3536:6:25"
            },
            "scope": 5308,
            "src": "3491:52:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "70a08231",
            "id": 5235,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "balanceOf",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5231,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5230,
                  "mutability": "mutable",
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5235,
                  "src": "3566:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5229,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3566:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3565:15:25"
            },
            "returnParameters": {
              "id": 5234,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5233,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5235,
                  "src": "3604:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5232,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3604:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3603:6:25"
            },
            "scope": 5308,
            "src": "3547:63:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "dd62ed3e",
            "id": 5244,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "allowance",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5240,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5237,
                  "mutability": "mutable",
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5244,
                  "src": "3633:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5236,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3633:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5239,
                  "mutability": "mutable",
                  "name": "spender",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5244,
                  "src": "3648:15:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5238,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3648:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3632:32:25"
            },
            "returnParameters": {
              "id": 5243,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5242,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5244,
                  "src": "3688:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5241,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3688:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3687:6:25"
            },
            "scope": 5308,
            "src": "3614:80:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "095ea7b3",
            "id": 5253,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "approve",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5249,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5246,
                  "mutability": "mutable",
                  "name": "spender",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5253,
                  "src": "3715:15:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5245,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3715:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5248,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5253,
                  "src": "3732:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5247,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3732:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3714:29:25"
            },
            "returnParameters": {
              "id": 5252,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5251,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5253,
                  "src": "3762:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5250,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3762:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3761:6:25"
            },
            "scope": 5308,
            "src": "3698:70:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "a9059cbb",
            "id": 5262,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "transfer",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5258,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5255,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5262,
                  "src": "3790:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5254,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3790:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5257,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5262,
                  "src": "3802:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5256,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3802:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3789:24:25"
            },
            "returnParameters": {
              "id": 5261,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5260,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5262,
                  "src": "3832:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5259,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3832:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3831:6:25"
            },
            "scope": 5308,
            "src": "3772:66:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "23b872dd",
            "id": 5273,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "transferFrom",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5269,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5264,
                  "mutability": "mutable",
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5273,
                  "src": "3869:12:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5263,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3869:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5266,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5273,
                  "src": "3887:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5265,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3887:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5268,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5273,
                  "src": "3903:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5267,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3903:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3863:54:25"
            },
            "returnParameters": {
              "id": 5272,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5271,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5273,
                  "src": "3936:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5270,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3936:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3935:6:25"
            },
            "scope": 5308,
            "src": "3842:100:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "3644e515",
            "id": 5278,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "DOMAIN_SEPARATOR",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5274,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3971:2:25"
            },
            "returnParameters": {
              "id": 5277,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5276,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5278,
                  "src": "3997:7:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5275,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3997:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3996:9:25"
            },
            "scope": 5308,
            "src": "3946:60:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "30adf81f",
            "id": 5283,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "PERMIT_TYPEHASH",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5279,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4034:2:25"
            },
            "returnParameters": {
              "id": 5282,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5281,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5283,
                  "src": "4060:7:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5280,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4060:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4059:9:25"
            },
            "scope": 5308,
            "src": "4010:59:25",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "7ecebe00",
            "id": 5290,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "nonces",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5286,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5285,
                  "mutability": "mutable",
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5290,
                  "src": "4089:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5284,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4089:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4088:15:25"
            },
            "returnParameters": {
              "id": 5289,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5288,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5290,
                  "src": "4127:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5287,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4127:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4126:6:25"
            },
            "scope": 5308,
            "src": "4073:60:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "d505accf",
            "id": 5307,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "permit",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5305,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5292,
                  "mutability": "mutable",
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5307,
                  "src": "4158:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5291,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4158:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5294,
                  "mutability": "mutable",
                  "name": "spender",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5307,
                  "src": "4177:15:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5293,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4177:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5296,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5307,
                  "src": "4198:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5295,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4198:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5298,
                  "mutability": "mutable",
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5307,
                  "src": "4214:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5297,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4214:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5300,
                  "mutability": "mutable",
                  "name": "v",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5307,
                  "src": "4233:7:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 5299,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "4233:5:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5302,
                  "mutability": "mutable",
                  "name": "r",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5307,
                  "src": "4246:9:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5301,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4246:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5304,
                  "mutability": "mutable",
                  "name": "s",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5307,
                  "src": "4261:9:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5303,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4261:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4152:122:25"
            },
            "returnParameters": {
              "id": 5306,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4283:0:25"
            },
            "scope": 5308,
            "src": "4137:147:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 7229,
        "src": "3118:1168:25"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 5390,
        "linearizedBaseContracts": [
          5390
        ],
        "name": "MockUniswapV2FactoryIERC20",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 5316,
            "name": "Approval",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5315,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5310,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5316,
                  "src": "4344:21:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5309,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4344:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5312,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "spender",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5316,
                  "src": "4367:23:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5311,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4367:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5314,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5316,
                  "src": "4392:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5313,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4392:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4343:60:25"
            },
            "src": "4329:75:25"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 5324,
            "name": "Transfer",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5323,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5318,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5324,
                  "src": "4422:20:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5317,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4422:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5320,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5324,
                  "src": "4444:18:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5319,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4444:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5322,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5324,
                  "src": "4464:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5321,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4464:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4421:54:25"
            },
            "src": "4407:69:25"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "06fdde03",
            "id": 5329,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "name",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5325,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4493:2:25"
            },
            "returnParameters": {
              "id": 5328,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5327,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5329,
                  "src": "4519:13:25",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5326,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4519:6:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4518:15:25"
            },
            "scope": 5390,
            "src": "4480:54:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "95d89b41",
            "id": 5334,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "symbol",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5330,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4553:2:25"
            },
            "returnParameters": {
              "id": 5333,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5332,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5334,
                  "src": "4579:13:25",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5331,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4579:6:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4578:15:25"
            },
            "scope": 5390,
            "src": "4538:56:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "313ce567",
            "id": 5339,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "decimals",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5335,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4615:2:25"
            },
            "returnParameters": {
              "id": 5338,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5337,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5339,
                  "src": "4641:5:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 5336,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "4641:5:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4640:7:25"
            },
            "scope": 5390,
            "src": "4598:50:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "18160ddd",
            "id": 5344,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "totalSupply",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5340,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4672:2:25"
            },
            "returnParameters": {
              "id": 5343,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5342,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5344,
                  "src": "4698:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5341,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4698:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4697:6:25"
            },
            "scope": 5390,
            "src": "4652:52:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "70a08231",
            "id": 5351,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "balanceOf",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5347,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5346,
                  "mutability": "mutable",
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5351,
                  "src": "4727:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5345,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4727:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4726:15:25"
            },
            "returnParameters": {
              "id": 5350,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5349,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5351,
                  "src": "4765:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5348,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4765:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4764:6:25"
            },
            "scope": 5390,
            "src": "4708:63:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "dd62ed3e",
            "id": 5360,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "allowance",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5356,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5353,
                  "mutability": "mutable",
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5360,
                  "src": "4794:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5352,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4794:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5355,
                  "mutability": "mutable",
                  "name": "spender",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5360,
                  "src": "4809:15:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5354,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4809:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4793:32:25"
            },
            "returnParameters": {
              "id": 5359,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5358,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5360,
                  "src": "4849:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5357,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4849:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4848:6:25"
            },
            "scope": 5390,
            "src": "4775:80:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "095ea7b3",
            "id": 5369,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "approve",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5365,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5362,
                  "mutability": "mutable",
                  "name": "spender",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5369,
                  "src": "4876:15:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5361,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4876:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5364,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5369,
                  "src": "4893:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5363,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4893:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4875:29:25"
            },
            "returnParameters": {
              "id": 5368,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5367,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5369,
                  "src": "4923:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5366,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4923:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4922:6:25"
            },
            "scope": 5390,
            "src": "4859:70:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "a9059cbb",
            "id": 5378,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "transfer",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5374,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5371,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5378,
                  "src": "4951:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5370,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4951:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5373,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5378,
                  "src": "4963:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5372,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4963:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4950:24:25"
            },
            "returnParameters": {
              "id": 5377,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5376,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5378,
                  "src": "4993:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5375,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4993:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4992:6:25"
            },
            "scope": 5390,
            "src": "4933:66:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "23b872dd",
            "id": 5389,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "transferFrom",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5385,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5380,
                  "mutability": "mutable",
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5389,
                  "src": "5030:12:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5379,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5030:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5382,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5389,
                  "src": "5048:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5381,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5048:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5384,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5389,
                  "src": "5064:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5383,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5064:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5024:54:25"
            },
            "returnParameters": {
              "id": 5388,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5387,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5389,
                  "src": "5097:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5386,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5097:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5096:6:25"
            },
            "scope": 5390,
            "src": "5003:100:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 7229,
        "src": "4288:817:25"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 5402,
        "linearizedBaseContracts": [
          5402
        ],
        "name": "IUniswapV2Callee",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "functionSelector": "10d1e85c",
            "id": 5401,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "uniswapV2Call",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5399,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5392,
                  "mutability": "mutable",
                  "name": "sender",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5401,
                  "src": "5166:14:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5391,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5166:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5394,
                  "mutability": "mutable",
                  "name": "amount0",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5401,
                  "src": "5186:12:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5393,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5186:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5396,
                  "mutability": "mutable",
                  "name": "amount1",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5401,
                  "src": "5204:12:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5395,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5204:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5398,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5401,
                  "src": "5222:19:25",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5397,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5222:5:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5160:85:25"
            },
            "returnParameters": {
              "id": 5400,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5254:0:25"
            },
            "scope": 5402,
            "src": "5138:117:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 7229,
        "src": "5107:150:25"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 5788,
        "linearizedBaseContracts": [
          5788
        ],
        "name": "UniswapV2ERC20",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 5405,
            "libraryName": {
              "contractScope": null,
              "id": 5403,
              "name": "MockUniswapV2FactorySafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7112,
              "src": "5293:28:25",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_MockUniswapV2FactorySafeMath_$7112",
                "typeString": "library MockUniswapV2FactorySafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "5287:44:25",
            "typeName": {
              "id": 5404,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "5326:4:25",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": true,
            "functionSelector": "06fdde03",
            "id": 5408,
            "mutability": "constant",
            "name": "name",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 5788,
            "src": "5335:42:25",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory_ptr",
              "typeString": "string"
            },
            "typeName": {
              "id": 5406,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "5335:6:25",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "556e6973776170205632",
              "id": 5407,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "5365:12:25",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_bfcc8ef98ffbf7b6c3fec7bf5185b566b9863e35a9d83acd49ad6824b5969738",
                "typeString": "literal_string \"Uniswap V2\""
              },
              "value": "Uniswap V2"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "functionSelector": "95d89b41",
            "id": 5411,
            "mutability": "constant",
            "name": "symbol",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 5788,
            "src": "5381:40:25",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory_ptr",
              "typeString": "string"
            },
            "typeName": {
              "id": 5409,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "5381:6:25",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "554e492d5632",
              "id": 5410,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "5413:8:25",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_0c49a525f6758cfb27d0ada1467d2a2e99733995423d47ae30ae4ba2ba563255",
                "typeString": "literal_string \"UNI-V2\""
              },
              "value": "UNI-V2"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "functionSelector": "313ce567",
            "id": 5414,
            "mutability": "constant",
            "name": "decimals",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 5788,
            "src": "5425:35:25",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 5412,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "5425:5:25",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "3138",
              "id": 5413,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "5458:2:25",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_18_by_1",
                "typeString": "int_const 18"
              },
              "value": "18"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "18160ddd",
            "id": 5416,
            "mutability": "mutable",
            "name": "totalSupply",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 5788,
            "src": "5464:23:25",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 5415,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "5464:4:25",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "70a08231",
            "id": 5420,
            "mutability": "mutable",
            "name": "balanceOf",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 5788,
            "src": "5491:41:25",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 5419,
              "keyType": {
                "id": 5417,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "5499:7:25",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "5491:24:25",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 5418,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "5510:4:25",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "dd62ed3e",
            "id": 5426,
            "mutability": "mutable",
            "name": "allowance",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 5788,
            "src": "5536:61:25",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
              "typeString": "mapping(address => mapping(address => uint256))"
            },
            "typeName": {
              "id": 5425,
              "keyType": {
                "id": 5421,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "5544:7:25",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "5536:44:25",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                "typeString": "mapping(address => mapping(address => uint256))"
              },
              "valueType": {
                "id": 5424,
                "keyType": {
                  "id": 5422,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "5563:7:25",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "nodeType": "Mapping",
                "src": "5555:24:25",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                  "typeString": "mapping(address => uint256)"
                },
                "valueType": {
                  "id": 5423,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "5574:4:25",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "3644e515",
            "id": 5428,
            "mutability": "mutable",
            "name": "DOMAIN_SEPARATOR",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 5788,
            "src": "5602:31:25",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 5427,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "5602:7:25",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": true,
            "functionSelector": "30adf81f",
            "id": 5431,
            "mutability": "constant",
            "name": "PERMIT_TYPEHASH",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 5788,
            "src": "5739:112:25",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 5429,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "5739:7:25",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307836653731656461653132623162393766346431663630333730666566313031303566613266616165303132363131346131363963363438343564363132366339",
              "id": 5430,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "5785:66:25",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_49955707469362902507454157297736832118868343942642399513960811609542965143241_by_1",
                "typeString": "int_const 4995...(69 digits omitted)...3241"
              },
              "value": "0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "7ecebe00",
            "id": 5435,
            "mutability": "mutable",
            "name": "nonces",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 5788,
            "src": "5855:38:25",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 5434,
              "keyType": {
                "id": 5432,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "5863:7:25",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "5855:24:25",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 5433,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "5874:4:25",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 5443,
            "name": "Approval",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5442,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5437,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5443,
                  "src": "5913:21:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5436,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5913:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5439,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "spender",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5443,
                  "src": "5936:23:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5438,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5936:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5441,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5443,
                  "src": "5961:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5440,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5961:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5912:60:25"
            },
            "src": "5898:75:25"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 5451,
            "name": "Transfer",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5450,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5445,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5451,
                  "src": "5991:20:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5444,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5991:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5447,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5451,
                  "src": "6013:18:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5446,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6013:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5449,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5451,
                  "src": "6033:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5448,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6033:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5990:54:25"
            },
            "src": "5976:69:25"
          },
          {
            "body": {
              "id": 5486,
              "nodeType": "Block",
              "src": "6070:365:25",
              "statements": [
                {
                  "assignments": [
                    5455
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5455,
                      "mutability": "mutable",
                      "name": "chainId",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5486,
                      "src": "6076:12:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5454,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6076:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5456,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6076:12:25"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "6103:34:25",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "6111:20:25",
                        "value": {
                          "arguments": [],
                          "functionName": {
                            "name": "chainid",
                            "nodeType": "YulIdentifier",
                            "src": "6122:7:25"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6122:9:25"
                        },
                        "variableNames": [
                          {
                            "name": "chainId",
                            "nodeType": "YulIdentifier",
                            "src": "6111:7:25"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 5455,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6111:7:25",
                      "valueSize": 1
                    }
                  ],
                  "id": 5457,
                  "nodeType": "InlineAssembly",
                  "src": "6094:43:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5484,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5458,
                      "name": "DOMAIN_SEPARATOR",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5428,
                      "src": "6142:16:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
                                  "id": 5463,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6219:84:25",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                                    "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                                  },
                                  "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                                    "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                                  }
                                ],
                                "id": 5462,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "6198:9:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 5464,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6198:115:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 5468,
                                      "name": "name",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5408,
                                      "src": "6339:4:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    ],
                                    "id": 5467,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "6333:5:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                      "typeString": "type(bytes storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 5466,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "6333:5:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 5469,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6333:11:25",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 5465,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "6323:9:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 5470,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6323:22:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 5474,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6371:3:25",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                        "typeString": "literal_string \"1\""
                                      },
                                      "value": "1"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                        "typeString": "literal_string \"1\""
                                      }
                                    ],
                                    "id": 5473,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "6365:5:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                      "typeString": "type(bytes storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 5472,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "6365:5:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 5475,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6365:10:25",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 5471,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "6355:9:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 5476,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6355:21:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5477,
                              "name": "chainId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5455,
                              "src": "6386:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5480,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "6411:4:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_UniswapV2ERC20_$5788",
                                    "typeString": "contract UniswapV2ERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_UniswapV2ERC20_$5788",
                                    "typeString": "contract UniswapV2ERC20"
                                  }
                                ],
                                "id": 5479,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6403:7:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5478,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6403:7:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 5481,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6403:13:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 5460,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "6178:3:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 5461,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encode",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6178:10:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 5482,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6178:246:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 5459,
                        "name": "keccak256",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -8,
                        "src": "6161:9:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (bytes memory) pure returns (bytes32)"
                        }
                      },
                      "id": 5483,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6161:269:25",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "6142:288:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 5485,
                  "nodeType": "ExpressionStatement",
                  "src": "6142:288:25"
                }
              ]
            },
            "documentation": null,
            "id": 5487,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5452,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6060:2:25"
            },
            "returnParameters": {
              "id": 5453,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6070:0:25"
            },
            "scope": 5788,
            "src": "6049:386:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5521,
              "nodeType": "Block",
              "src": "6487:135:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5499,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5494,
                      "name": "totalSupply",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5416,
                      "src": "6493:11:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5497,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5491,
                          "src": "6523:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 5495,
                          "name": "totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5416,
                          "src": "6507:11:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5496,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7061,
                        "src": "6507:15:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 5498,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6507:22:25",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6493:36:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5500,
                  "nodeType": "ExpressionStatement",
                  "src": "6493:36:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5510,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 5501,
                        "name": "balanceOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5420,
                        "src": "6535:9:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 5503,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 5502,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5489,
                        "src": "6545:2:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "6535:13:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5508,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5491,
                          "src": "6569:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5504,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5420,
                            "src": "6551:9:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 5506,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5505,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5489,
                            "src": "6561:2:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6551:13:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5507,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7061,
                        "src": "6551:17:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 5509,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6551:24:25",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6535:40:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5511,
                  "nodeType": "ExpressionStatement",
                  "src": "6535:40:25"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5515,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6603:1:25",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 5514,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6595:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 5513,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "6595:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 5516,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6595:10:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5517,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5489,
                        "src": "6607:2:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5518,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5491,
                        "src": "6611:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5512,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5451,
                      "src": "6586:8:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 5519,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6586:31:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5520,
                  "nodeType": "EmitStatement",
                  "src": "6581:36:25"
                }
              ]
            },
            "documentation": null,
            "id": 5522,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_mint",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5492,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5489,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5522,
                  "src": "6454:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5488,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6454:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5491,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5522,
                  "src": "6466:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5490,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6466:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6453:24:25"
            },
            "returnParameters": {
              "id": 5493,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6487:0:25"
            },
            "scope": 5788,
            "src": "6439:183:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5556,
              "nodeType": "Block",
              "src": "6676:141:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5538,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 5529,
                        "name": "balanceOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5420,
                        "src": "6682:9:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 5531,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 5530,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5524,
                        "src": "6692:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "6682:15:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5536,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5526,
                          "src": "6720:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5532,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5420,
                            "src": "6700:9:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 5534,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5533,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5524,
                            "src": "6710:4:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6700:15:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5535,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7083,
                        "src": "6700:19:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 5537,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6700:26:25",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6682:44:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5539,
                  "nodeType": "ExpressionStatement",
                  "src": "6682:44:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5545,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5540,
                      "name": "totalSupply",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5416,
                      "src": "6732:11:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5543,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5526,
                          "src": "6762:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 5541,
                          "name": "totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5416,
                          "src": "6746:11:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5542,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7083,
                        "src": "6746:15:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 5544,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6746:22:25",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6732:36:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5546,
                  "nodeType": "ExpressionStatement",
                  "src": "6732:36:25"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5548,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5524,
                        "src": "6788:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5551,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6802:1:25",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 5550,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6794:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 5549,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "6794:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 5552,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6794:10:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5553,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5526,
                        "src": "6806:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5547,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5451,
                      "src": "6779:8:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 5554,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6779:33:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5555,
                  "nodeType": "EmitStatement",
                  "src": "6774:38:25"
                }
              ]
            },
            "documentation": null,
            "id": 5557,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_burn",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5527,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5524,
                  "mutability": "mutable",
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5557,
                  "src": "6641:12:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5523,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6641:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5526,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5557,
                  "src": "6655:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5525,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6655:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6640:26:25"
            },
            "returnParameters": {
              "id": 5528,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6676:0:25"
            },
            "scope": 5788,
            "src": "6626:191:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5580,
              "nodeType": "Block",
              "src": "6907:86:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5572,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5566,
                          "name": "allowance",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5426,
                          "src": "6913:9:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                            "typeString": "mapping(address => mapping(address => uint256))"
                          }
                        },
                        "id": 5569,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5567,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5559,
                          "src": "6923:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "6913:16:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 5570,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 5568,
                        "name": "spender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5561,
                        "src": "6930:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "6913:25:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5571,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5563,
                      "src": "6941:5:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6913:33:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5573,
                  "nodeType": "ExpressionStatement",
                  "src": "6913:33:25"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5575,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5559,
                        "src": "6966:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5576,
                        "name": "spender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5561,
                        "src": "6973:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5577,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5563,
                        "src": "6982:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5574,
                      "name": "Approval",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5443,
                      "src": "6957:8:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 5578,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6957:31:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5579,
                  "nodeType": "EmitStatement",
                  "src": "6952:36:25"
                }
              ]
            },
            "documentation": null,
            "id": 5581,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_approve",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5564,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5559,
                  "mutability": "mutable",
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5581,
                  "src": "6844:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5558,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6844:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5561,
                  "mutability": "mutable",
                  "name": "spender",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5581,
                  "src": "6863:15:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5560,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6863:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5563,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5581,
                  "src": "6884:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5562,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6884:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6838:60:25"
            },
            "returnParameters": {
              "id": 5565,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6907:0:25"
            },
            "scope": 5788,
            "src": "6821:172:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 5618,
              "nodeType": "Block",
              "src": "7078:137:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5599,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 5590,
                        "name": "balanceOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5420,
                        "src": "7084:9:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 5592,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 5591,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5583,
                        "src": "7094:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "7084:15:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5597,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5587,
                          "src": "7122:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5593,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5420,
                            "src": "7102:9:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 5595,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5594,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5583,
                            "src": "7112:4:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7102:15:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5596,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7083,
                        "src": "7102:19:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 5598,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7102:26:25",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7084:44:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5600,
                  "nodeType": "ExpressionStatement",
                  "src": "7084:44:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5610,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 5601,
                        "name": "balanceOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5420,
                        "src": "7134:9:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 5603,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 5602,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5585,
                        "src": "7144:2:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "7134:13:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5608,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5587,
                          "src": "7168:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5604,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5420,
                            "src": "7150:9:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 5606,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5605,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5585,
                            "src": "7160:2:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7150:13:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5607,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7061,
                        "src": "7150:17:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 5609,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7150:24:25",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7134:40:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5611,
                  "nodeType": "ExpressionStatement",
                  "src": "7134:40:25"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5613,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5583,
                        "src": "7194:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5614,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5585,
                        "src": "7200:2:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5615,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5587,
                        "src": "7204:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5612,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5451,
                      "src": "7185:8:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 5616,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7185:25:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5617,
                  "nodeType": "EmitStatement",
                  "src": "7180:30:25"
                }
              ]
            },
            "documentation": null,
            "id": 5619,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_transfer",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5588,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5583,
                  "mutability": "mutable",
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5619,
                  "src": "7021:12:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5582,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7021:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5585,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5619,
                  "src": "7039:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5584,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7039:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5587,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5619,
                  "src": "7055:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5586,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7055:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7015:54:25"
            },
            "returnParameters": {
              "id": 5589,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7078:0:25"
            },
            "scope": 5788,
            "src": "6997:218:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 5637,
              "nodeType": "Block",
              "src": "7289:64:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5629,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "7304:3:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5630,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "7304:10:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5631,
                        "name": "spender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5621,
                        "src": "7316:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5632,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5623,
                        "src": "7325:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5628,
                      "name": "_approve",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5581,
                      "src": "7295:8:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 5633,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7295:36:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5634,
                  "nodeType": "ExpressionStatement",
                  "src": "7295:36:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 5635,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7344:4:25",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 5627,
                  "id": 5636,
                  "nodeType": "Return",
                  "src": "7337:11:25"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "095ea7b3",
            "id": 5638,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "approve",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5624,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5621,
                  "mutability": "mutable",
                  "name": "spender",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5638,
                  "src": "7236:15:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5620,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7236:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5623,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5638,
                  "src": "7253:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5622,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7253:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7235:29:25"
            },
            "returnParameters": {
              "id": 5627,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5626,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5638,
                  "src": "7283:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5625,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7283:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7282:6:25"
            },
            "scope": 5788,
            "src": "7219:134:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 5656,
              "nodeType": "Block",
              "src": "7423:60:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5648,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "7439:3:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5649,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "7439:10:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5650,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5640,
                        "src": "7451:2:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5651,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5642,
                        "src": "7455:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5647,
                      "name": "_transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5619,
                      "src": "7429:9:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 5652,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7429:32:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5653,
                  "nodeType": "ExpressionStatement",
                  "src": "7429:32:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 5654,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7474:4:25",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 5646,
                  "id": 5655,
                  "nodeType": "Return",
                  "src": "7467:11:25"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "a9059cbb",
            "id": 5657,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "transfer",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5643,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5640,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5657,
                  "src": "7375:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5639,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7375:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5642,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5657,
                  "src": "7387:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5641,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7387:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7374:24:25"
            },
            "returnParameters": {
              "id": 5646,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5645,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5657,
                  "src": "7417:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5644,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7417:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7416:6:25"
            },
            "scope": 5788,
            "src": "7357:126:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 5707,
              "nodeType": "Block",
              "src": "7587:187:25",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5679,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5668,
                          "name": "allowance",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5426,
                          "src": "7597:9:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                            "typeString": "mapping(address => mapping(address => uint256))"
                          }
                        },
                        "id": 5670,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5669,
                          "name": "from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5659,
                          "src": "7607:4:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "7597:15:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 5673,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5671,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "7613:3:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5672,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "7613:10:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "7597:27:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5677,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "-",
                          "prefix": true,
                          "src": "7633:2:25",
                          "subExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 5676,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7634:1:25",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_minus_1_by_1",
                            "typeString": "int_const -1"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_minus_1_by_1",
                            "typeString": "int_const -1"
                          }
                        ],
                        "id": 5675,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "7628:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": {
                          "id": 5674,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "7628:4:25",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 5678,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7628:8:25",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7597:39:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5698,
                  "nodeType": "IfStatement",
                  "src": "7593:128:25",
                  "trueBody": {
                    "id": 5697,
                    "nodeType": "Block",
                    "src": "7638:83:25",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5695,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 5680,
                                "name": "allowance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5426,
                                "src": "7646:9:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 5684,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 5681,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5659,
                                "src": "7656:4:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7646:15:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 5685,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5682,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "7662:3:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5683,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7662:10:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7646:27:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5693,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5663,
                                "src": "7708:5:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 5686,
                                    "name": "allowance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5426,
                                    "src": "7676:9:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(address => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 5688,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 5687,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5659,
                                    "src": "7686:4:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7676:15:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 5691,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5689,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "7692:3:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 5690,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7692:10:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7676:27:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5692,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7083,
                              "src": "7676:31:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 5694,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7676:38:25",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7646:68:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5696,
                        "nodeType": "ExpressionStatement",
                        "src": "7646:68:25"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5700,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5659,
                        "src": "7736:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5701,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5661,
                        "src": "7742:2:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5702,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5663,
                        "src": "7746:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5699,
                      "name": "_transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5619,
                      "src": "7726:9:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 5703,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7726:26:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5704,
                  "nodeType": "ExpressionStatement",
                  "src": "7726:26:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 5705,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7765:4:25",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 5667,
                  "id": 5706,
                  "nodeType": "Return",
                  "src": "7758:11:25"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "23b872dd",
            "id": 5708,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "transferFrom",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5664,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5659,
                  "mutability": "mutable",
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5708,
                  "src": "7514:12:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5658,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7514:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5661,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5708,
                  "src": "7532:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5660,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7532:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5663,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5708,
                  "src": "7548:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5662,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7548:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7508:54:25"
            },
            "returnParameters": {
              "id": 5667,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5666,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5708,
                  "src": "7581:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5665,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7581:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7580:6:25"
            },
            "scope": 5788,
            "src": "7487:287:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 5786,
              "nodeType": "Block",
              "src": "7925:521:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5729,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5726,
                          "name": "deadline",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5716,
                          "src": "7939:8:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5727,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -4,
                            "src": "7951:5:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 5728,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7951:15:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7939:27:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "556e697377617056323a2045585049524544",
                        "id": 5730,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7968:20:25",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_47797eaaf6df6dc2efdb1e824209400a8293aff4c1e7f6d90fcc4b3e3ba18a87",
                          "typeString": "literal_string \"UniswapV2: EXPIRED\""
                        },
                        "value": "UniswapV2: EXPIRED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_47797eaaf6df6dc2efdb1e824209400a8293aff4c1e7f6d90fcc4b3e3ba18a87",
                          "typeString": "literal_string \"UniswapV2: EXPIRED\""
                        }
                      ],
                      "id": 5725,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "7931:7:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5731,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7931:58:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5732,
                  "nodeType": "ExpressionStatement",
                  "src": "7931:58:25"
                },
                {
                  "assignments": [
                    5734
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5734,
                      "mutability": "mutable",
                      "name": "digest",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5786,
                      "src": "7995:14:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 5733,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7995:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5756,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "1901",
                            "id": 5738,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8065:10:25",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                              "typeString": "literal_string \"\u0019\u0001\""
                            },
                            "value": "\u0019\u0001"
                          },
                          {
                            "argumentTypes": null,
                            "id": 5739,
                            "name": "DOMAIN_SEPARATOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5428,
                            "src": "8087:16:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 5743,
                                    "name": "PERMIT_TYPEHASH",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5431,
                                    "src": "8136:15:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 5744,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5710,
                                    "src": "8153:5:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 5745,
                                    "name": "spender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5712,
                                    "src": "8160:7:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 5746,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5714,
                                    "src": "8169:5:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 5750,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "++",
                                    "prefix": false,
                                    "src": "8176:15:25",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 5747,
                                        "name": "nonces",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5435,
                                        "src": "8176:6:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                          "typeString": "mapping(address => uint256)"
                                        }
                                      },
                                      "id": 5749,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 5748,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5710,
                                        "src": "8183:5:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "8176:13:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 5751,
                                    "name": "deadline",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5716,
                                    "src": "8193:8:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5741,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "8125:3:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 5742,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encode",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "8125:10:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 5752,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8125:77:25",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 5740,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "8115:9:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 5753,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8115:88:25",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                              "typeString": "literal_string \"\u0019\u0001\""
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5736,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "8037:3:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 5737,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8037:16:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 5754,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8037:176:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 5735,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "8018:9:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 5755,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8018:203:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7995:226:25"
                },
                {
                  "assignments": [
                    5758
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5758,
                      "mutability": "mutable",
                      "name": "recoveredAddress",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5786,
                      "src": "8227:24:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5757,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8227:7:25",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5765,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5760,
                        "name": "digest",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5734,
                        "src": "8264:6:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5761,
                        "name": "v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5718,
                        "src": "8272:1:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5762,
                        "name": "r",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5720,
                        "src": "8275:1:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5763,
                        "name": "s",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5722,
                        "src": "8278:1:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 5759,
                      "name": "ecrecover",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -6,
                      "src": "8254:9:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                      }
                    },
                    "id": 5764,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8254:26:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8227:53:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 5776,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 5772,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5767,
                            "name": "recoveredAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5758,
                            "src": "8301:16:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 5770,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8329:1:25",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 5769,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8321:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 5768,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "8321:7:25",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 5771,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8321:10:25",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "8301:30:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 5775,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5773,
                            "name": "recoveredAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5758,
                            "src": "8335:16:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 5774,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5710,
                            "src": "8355:5:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "8335:25:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "8301:59:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "556e697377617056323a20494e56414c49445f5349474e4154555245",
                        "id": 5777,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8368:30:25",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_2d893fc9f5fa2494c39ecec82df2778b33226458ccce3b9a56f5372437d54a56",
                          "typeString": "literal_string \"UniswapV2: INVALID_SIGNATURE\""
                        },
                        "value": "UniswapV2: INVALID_SIGNATURE"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_2d893fc9f5fa2494c39ecec82df2778b33226458ccce3b9a56f5372437d54a56",
                          "typeString": "literal_string \"UniswapV2: INVALID_SIGNATURE\""
                        }
                      ],
                      "id": 5766,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "8286:7:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5778,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8286:118:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5779,
                  "nodeType": "ExpressionStatement",
                  "src": "8286:118:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5781,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5710,
                        "src": "8419:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5782,
                        "name": "spender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5712,
                        "src": "8426:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5783,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5714,
                        "src": "8435:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5780,
                      "name": "_approve",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5581,
                      "src": "8410:8:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 5784,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8410:31:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5785,
                  "nodeType": "ExpressionStatement",
                  "src": "8410:31:25"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "d505accf",
            "id": 5787,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "permit",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5723,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5710,
                  "mutability": "mutable",
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5787,
                  "src": "7799:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5709,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7799:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5712,
                  "mutability": "mutable",
                  "name": "spender",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5787,
                  "src": "7818:15:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5711,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7818:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5714,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5787,
                  "src": "7839:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5713,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7839:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5716,
                  "mutability": "mutable",
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5787,
                  "src": "7855:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5715,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7855:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5718,
                  "mutability": "mutable",
                  "name": "v",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5787,
                  "src": "7874:7:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 5717,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "7874:5:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5720,
                  "mutability": "mutable",
                  "name": "r",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5787,
                  "src": "7887:9:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5719,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7887:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5722,
                  "mutability": "mutable",
                  "name": "s",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5787,
                  "src": "7902:9:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5721,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7902:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7793:122:25"
            },
            "returnParameters": {
              "id": 5724,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7925:0:25"
            },
            "scope": 5788,
            "src": "7778:668:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 7229,
        "src": "5259:3189:25"
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 5789,
              "name": "UniswapV2ERC20",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5788,
              "src": "8496:14:25",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_UniswapV2ERC20_$5788",
                "typeString": "contract UniswapV2ERC20"
              }
            },
            "id": 5790,
            "nodeType": "InheritanceSpecifier",
            "src": "8496:14:25"
          }
        ],
        "contractDependencies": [
          5788
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 6848,
        "linearizedBaseContracts": [
          6848,
          5788
        ],
        "name": "MockUniswapV2FactoryUniswapV2Pair",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 5793,
            "libraryName": {
              "contractScope": null,
              "id": 5791,
              "name": "MockUniswapV2FactorySafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7112,
              "src": "8521:28:25",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_MockUniswapV2FactorySafeMath_$7112",
                "typeString": "library MockUniswapV2FactorySafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "8515:44:25",
            "typeName": {
              "id": 5792,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "8554:4:25",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 5796,
            "libraryName": {
              "contractScope": null,
              "id": 5794,
              "name": "UQ112x112",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7228,
              "src": "8568:9:25",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_UQ112x112_$7228",
                "typeString": "library UQ112x112"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "8562:28:25",
            "typeName": {
              "id": 5795,
              "name": "uint224",
              "nodeType": "ElementaryTypeName",
              "src": "8582:7:25",
              "typeDescriptions": {
                "typeIdentifier": "t_uint224",
                "typeString": "uint224"
              }
            }
          },
          {
            "constant": true,
            "functionSelector": "ba9a7a56",
            "id": 5801,
            "mutability": "constant",
            "name": "MINIMUM_LIQUIDITY",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 6848,
            "src": "8594:46:25",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 5797,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "8594:4:25",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "commonType": {
                "typeIdentifier": "t_rational_1000_by_1",
                "typeString": "int_const 1000"
              },
              "id": 5800,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "lValueRequested": false,
              "leftExpression": {
                "argumentTypes": null,
                "hexValue": "3130",
                "id": 5798,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "8635:2:25",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_10_by_1",
                  "typeString": "int_const 10"
                },
                "value": "10"
              },
              "nodeType": "BinaryOperation",
              "operator": "**",
              "rightExpression": {
                "argumentTypes": null,
                "hexValue": "33",
                "id": 5799,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "8639:1:25",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_3_by_1",
                  "typeString": "int_const 3"
                },
                "value": "3"
              },
              "src": "8635:5:25",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1000_by_1",
                "typeString": "int_const 1000"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 5812,
            "mutability": "constant",
            "name": "SELECTOR",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 6848,
            "src": "8644:88:25",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 5802,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "8644:6:25",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "arguments": [
                    {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "7472616e7366657228616464726573732c75696e7432353629",
                          "id": 5808,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8702:27:25",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b",
                            "typeString": "literal_string \"transfer(address,uint256)\""
                          },
                          "value": "transfer(address,uint256)"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b",
                            "typeString": "literal_string \"transfer(address,uint256)\""
                          }
                        ],
                        "id": 5807,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "8696:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                          "typeString": "type(bytes storage pointer)"
                        },
                        "typeName": {
                          "id": 5806,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8696:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 5809,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8696:34:25",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    ],
                    "id": 5805,
                    "name": "keccak256",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": -8,
                    "src": "8686:9:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                      "typeString": "function (bytes memory) pure returns (bytes32)"
                    }
                  },
                  "id": 5810,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "8686:45:25",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                ],
                "id": 5804,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "ElementaryTypeNameExpression",
                "src": "8679:6:25",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_bytes4_$",
                  "typeString": "type(bytes4)"
                },
                "typeName": {
                  "id": 5803,
                  "name": "bytes4",
                  "nodeType": "ElementaryTypeName",
                  "src": "8679:6:25",
                  "typeDescriptions": {
                    "typeIdentifier": null,
                    "typeString": null
                  }
                }
              },
              "id": 5811,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "8679:53:25",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "functionSelector": "c45a0155",
            "id": 5814,
            "mutability": "mutable",
            "name": "factory",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 6848,
            "src": "8737:22:25",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 5813,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "8737:7:25",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "0dfe1681",
            "id": 5816,
            "mutability": "mutable",
            "name": "token0",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 6848,
            "src": "8763:21:25",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 5815,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "8763:7:25",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "d21220a7",
            "id": 5818,
            "mutability": "mutable",
            "name": "token1",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 6848,
            "src": "8788:21:25",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 5817,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "8788:7:25",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 5820,
            "mutability": "mutable",
            "name": "reserve0",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 6848,
            "src": "8814:24:25",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint112",
              "typeString": "uint112"
            },
            "typeName": {
              "id": 5819,
              "name": "uint112",
              "nodeType": "ElementaryTypeName",
              "src": "8814:7:25",
              "typeDescriptions": {
                "typeIdentifier": "t_uint112",
                "typeString": "uint112"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 5822,
            "mutability": "mutable",
            "name": "reserve1",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 6848,
            "src": "8898:24:25",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint112",
              "typeString": "uint112"
            },
            "typeName": {
              "id": 5821,
              "name": "uint112",
              "nodeType": "ElementaryTypeName",
              "src": "8898:7:25",
              "typeDescriptions": {
                "typeIdentifier": "t_uint112",
                "typeString": "uint112"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 5824,
            "mutability": "mutable",
            "name": "blockTimestampLast",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 6848,
            "src": "8982:33:25",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint32",
              "typeString": "uint32"
            },
            "typeName": {
              "id": 5823,
              "name": "uint32",
              "nodeType": "ElementaryTypeName",
              "src": "8982:6:25",
              "typeDescriptions": {
                "typeIdentifier": "t_uint32",
                "typeString": "uint32"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "functionSelector": "5909c0d5",
            "id": 5826,
            "mutability": "mutable",
            "name": "price0CumulativeLast",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 6848,
            "src": "9076:32:25",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 5825,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "9076:4:25",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "5a3d5493",
            "id": 5828,
            "mutability": "mutable",
            "name": "price1CumulativeLast",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 6848,
            "src": "9112:32:25",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 5827,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "9112:4:25",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "7464fc3d",
            "id": 5830,
            "mutability": "mutable",
            "name": "kLast",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 6848,
            "src": "9148:17:25",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 5829,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "9148:4:25",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 5833,
            "mutability": "mutable",
            "name": "unlocked",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 6848,
            "src": "9250:25:25",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 5831,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "9250:4:25",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "31",
              "id": 5832,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "9274:1:25",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1_by_1",
                "typeString": "int_const 1"
              },
              "value": "1"
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 5851,
              "nodeType": "Block",
              "src": "9295:97:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5838,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5836,
                          "name": "unlocked",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5833,
                          "src": "9309:8:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 5837,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9321:1:25",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "9309:13:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "556e697377617056323a204c4f434b4544",
                        "id": 5839,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9324:19:25",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4cc87f075f04bdfaccb0dc54ec0b98f9169b1507a7e83ec8ee97e34d6a77db4a",
                          "typeString": "literal_string \"UniswapV2: LOCKED\""
                        },
                        "value": "UniswapV2: LOCKED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_4cc87f075f04bdfaccb0dc54ec0b98f9169b1507a7e83ec8ee97e34d6a77db4a",
                          "typeString": "literal_string \"UniswapV2: LOCKED\""
                        }
                      ],
                      "id": 5835,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "9301:7:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5840,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9301:43:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5841,
                  "nodeType": "ExpressionStatement",
                  "src": "9301:43:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5844,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5842,
                      "name": "unlocked",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5833,
                      "src": "9350:8:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 5843,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9361:1:25",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "9350:12:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5845,
                  "nodeType": "ExpressionStatement",
                  "src": "9350:12:25"
                },
                {
                  "id": 5846,
                  "nodeType": "PlaceholderStatement",
                  "src": "9368:1:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5849,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5847,
                      "name": "unlocked",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5833,
                      "src": "9375:8:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 5848,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9386:1:25",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "9375:12:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5850,
                  "nodeType": "ExpressionStatement",
                  "src": "9375:12:25"
                }
              ]
            },
            "documentation": null,
            "id": 5852,
            "name": "lock",
            "nodeType": "ModifierDefinition",
            "overrides": null,
            "parameters": {
              "id": 5834,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9292:2:25"
            },
            "src": "9279:113:25",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5873,
              "nodeType": "Block",
              "src": "9544:103:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5863,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5861,
                      "name": "_reserve0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5855,
                      "src": "9550:9:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5862,
                      "name": "reserve0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5820,
                      "src": "9562:8:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      }
                    },
                    "src": "9550:20:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint112",
                      "typeString": "uint112"
                    }
                  },
                  "id": 5864,
                  "nodeType": "ExpressionStatement",
                  "src": "9550:20:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5867,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5865,
                      "name": "_reserve1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5857,
                      "src": "9576:9:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5866,
                      "name": "reserve1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5822,
                      "src": "9588:8:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      }
                    },
                    "src": "9576:20:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint112",
                      "typeString": "uint112"
                    }
                  },
                  "id": 5868,
                  "nodeType": "ExpressionStatement",
                  "src": "9576:20:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5871,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5869,
                      "name": "_blockTimestampLast",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5859,
                      "src": "9602:19:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5870,
                      "name": "blockTimestampLast",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5824,
                      "src": "9624:18:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "src": "9602:40:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "id": 5872,
                  "nodeType": "ExpressionStatement",
                  "src": "9602:40:25"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "0902f1ac",
            "id": 5874,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getReserves",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5853,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9416:2:25"
            },
            "returnParameters": {
              "id": 5860,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5855,
                  "mutability": "mutable",
                  "name": "_reserve0",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5874,
                  "src": "9459:17:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint112",
                    "typeString": "uint112"
                  },
                  "typeName": {
                    "id": 5854,
                    "name": "uint112",
                    "nodeType": "ElementaryTypeName",
                    "src": "9459:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint112",
                      "typeString": "uint112"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5857,
                  "mutability": "mutable",
                  "name": "_reserve1",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5874,
                  "src": "9484:17:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint112",
                    "typeString": "uint112"
                  },
                  "typeName": {
                    "id": 5856,
                    "name": "uint112",
                    "nodeType": "ElementaryTypeName",
                    "src": "9484:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint112",
                      "typeString": "uint112"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5859,
                  "mutability": "mutable",
                  "name": "_blockTimestampLast",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5874,
                  "src": "9509:26:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 5858,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9509:6:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9451:90:25"
            },
            "scope": 6848,
            "src": "9396:251:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5916,
              "nodeType": "Block",
              "src": "9737:222:25",
              "statements": [
                {
                  "assignments": [
                    5884,
                    5886
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5884,
                      "mutability": "mutable",
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5916,
                      "src": "9744:12:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 5883,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "9744:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5886,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5916,
                      "src": "9758:17:25",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 5885,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "9758:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5896,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5891,
                            "name": "SELECTOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5812,
                            "src": "9813:8:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5892,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5878,
                            "src": "9823:2:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5893,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5880,
                            "src": "9827:5:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5889,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "9790:3:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 5890,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSelector",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "9790:22:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes4) pure returns (bytes memory)"
                          }
                        },
                        "id": 5894,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9790:43:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 5887,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5876,
                        "src": "9779:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 5888,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "call",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "9779:10:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                      }
                    },
                    "id": 5895,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9779:55:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9743:91:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 5912,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5898,
                          "name": "success",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5884,
                          "src": "9855:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 5910,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 5902,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5899,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5886,
                                    "src": "9867:4:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 5900,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "9867:11:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 5901,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9882:1:25",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "9867:16:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 5905,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5886,
                                    "src": "9898:4:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "id": 5907,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "9905:4:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        },
                                        "typeName": {
                                          "id": 5906,
                                          "name": "bool",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "9905:4:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      }
                                    ],
                                    "id": 5908,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "9904:6:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bool_$",
                                      "typeString": "type(bool)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_type$_t_bool_$",
                                      "typeString": "type(bool)"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5903,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "9887:3:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 5904,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "decode",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "9887:10:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 5909,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9887:24:25",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "9867:44:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 5911,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "9866:46:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "9855:57:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "556e697377617056323a205452414e534645525f4641494c4544",
                        "id": 5913,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9920:28:25",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d8733df98393ec23d211b1de22ecb14bb9ce352e147cbbbe19c11e12e90b7ff2",
                          "typeString": "literal_string \"UniswapV2: TRANSFER_FAILED\""
                        },
                        "value": "UniswapV2: TRANSFER_FAILED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d8733df98393ec23d211b1de22ecb14bb9ce352e147cbbbe19c11e12e90b7ff2",
                          "typeString": "literal_string \"UniswapV2: TRANSFER_FAILED\""
                        }
                      ],
                      "id": 5897,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "9840:7:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5914,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9840:114:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5915,
                  "nodeType": "ExpressionStatement",
                  "src": "9840:114:25"
                }
              ]
            },
            "documentation": null,
            "id": 5917,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_safeTransfer",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5881,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5876,
                  "mutability": "mutable",
                  "name": "token",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5917,
                  "src": "9679:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5875,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9679:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5878,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5917,
                  "src": "9698:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5877,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9698:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5880,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5917,
                  "src": "9714:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5879,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "9714:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9673:55:25"
            },
            "returnParameters": {
              "id": 5882,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9737:0:25"
            },
            "scope": 6848,
            "src": "9651:308:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 5925,
            "name": "Mint",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5924,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5919,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "sender",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5925,
                  "src": "9974:22:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5918,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9974:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5921,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount0",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5925,
                  "src": "9998:12:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5920,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "9998:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5923,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount1",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5925,
                  "src": "10012:12:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5922,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10012:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9973:52:25"
            },
            "src": "9963:63:25"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 5935,
            "name": "Burn",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5934,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5927,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "sender",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5935,
                  "src": "10040:22:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5926,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10040:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5929,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount0",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5935,
                  "src": "10064:12:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5928,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10064:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5931,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount1",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5935,
                  "src": "10078:12:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5930,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10078:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5933,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5935,
                  "src": "10092:18:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5932,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10092:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10039:72:25"
            },
            "src": "10029:83:25"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 5949,
            "name": "Swap",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5948,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5937,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "sender",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5949,
                  "src": "10131:22:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5936,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10131:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5939,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount0In",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5949,
                  "src": "10159:14:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5938,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10159:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5941,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount1In",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5949,
                  "src": "10179:14:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5940,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10179:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5943,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount0Out",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5949,
                  "src": "10199:15:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5942,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10199:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5945,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount1Out",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5949,
                  "src": "10220:15:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5944,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10220:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5947,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5949,
                  "src": "10241:18:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5946,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10241:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10125:138:25"
            },
            "src": "10115:149:25"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 5955,
            "name": "Sync",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5954,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5951,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "reserve0",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5955,
                  "src": "10278:16:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint112",
                    "typeString": "uint112"
                  },
                  "typeName": {
                    "id": 5950,
                    "name": "uint112",
                    "nodeType": "ElementaryTypeName",
                    "src": "10278:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint112",
                      "typeString": "uint112"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5953,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "reserve1",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5955,
                  "src": "10296:16:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint112",
                    "typeString": "uint112"
                  },
                  "typeName": {
                    "id": 5952,
                    "name": "uint112",
                    "nodeType": "ElementaryTypeName",
                    "src": "10296:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint112",
                      "typeString": "uint112"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10277:36:25"
            },
            "src": "10267:47:25"
          },
          {
            "body": {
              "id": 5963,
              "nodeType": "Block",
              "src": "10339:31:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5961,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5958,
                      "name": "factory",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5814,
                      "src": "10345:7:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5959,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "10355:3:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 5960,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "10355:10:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "10345:20:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 5962,
                  "nodeType": "ExpressionStatement",
                  "src": "10345:20:25"
                }
              ]
            },
            "documentation": null,
            "id": 5964,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5956,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10329:2:25"
            },
            "returnParameters": {
              "id": 5957,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10339:0:25"
            },
            "scope": 6848,
            "src": "10318:52:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5987,
              "nodeType": "Block",
              "src": "10491:129:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 5975,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5972,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "10505:3:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 5973,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "10505:10:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 5974,
                          "name": "factory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5814,
                          "src": "10519:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "10505:21:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "556e697377617056323a20464f5242494444454e",
                        "id": 5976,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10528:22:25",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6e6d2caae3ed190a2586f9b576de92bc80eab72002acec2261bbed89d68a3b37",
                          "typeString": "literal_string \"UniswapV2: FORBIDDEN\""
                        },
                        "value": "UniswapV2: FORBIDDEN"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6e6d2caae3ed190a2586f9b576de92bc80eab72002acec2261bbed89d68a3b37",
                          "typeString": "literal_string \"UniswapV2: FORBIDDEN\""
                        }
                      ],
                      "id": 5971,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "10497:7:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5977,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10497:54:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5978,
                  "nodeType": "ExpressionStatement",
                  "src": "10497:54:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5981,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5979,
                      "name": "token0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5816,
                      "src": "10577:6:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5980,
                      "name": "_token0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5966,
                      "src": "10586:7:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "10577:16:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 5982,
                  "nodeType": "ExpressionStatement",
                  "src": "10577:16:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5985,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5983,
                      "name": "token1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5818,
                      "src": "10599:6:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5984,
                      "name": "_token1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5968,
                      "src": "10608:7:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "10599:16:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 5986,
                  "nodeType": "ExpressionStatement",
                  "src": "10599:16:25"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "485cc955",
            "id": 5988,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5969,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5966,
                  "mutability": "mutable",
                  "name": "_token0",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5988,
                  "src": "10448:15:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5965,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10448:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5968,
                  "mutability": "mutable",
                  "name": "_token1",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5988,
                  "src": "10465:15:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5967,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10465:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10447:34:25"
            },
            "returnParameters": {
              "id": 5970,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10491:0:25"
            },
            "scope": 6848,
            "src": "10428:192:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 6102,
              "nodeType": "Block",
              "src": "10811:698:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 6014,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6006,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 6000,
                            "name": "balance0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5990,
                            "src": "10825:8:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 6004,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "10845:2:25",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 6003,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10846:1:25",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              ],
                              "id": 6002,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10837:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint112_$",
                                "typeString": "type(uint112)"
                              },
                              "typeName": {
                                "id": 6001,
                                "name": "uint112",
                                "nodeType": "ElementaryTypeName",
                                "src": "10837:7:25",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 6005,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10837:11:25",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "src": "10825:23:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6013,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 6007,
                            "name": "balance1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5992,
                            "src": "10852:8:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 6011,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "10872:2:25",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 6010,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10873:1:25",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              ],
                              "id": 6009,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10864:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint112_$",
                                "typeString": "type(uint112)"
                              },
                              "typeName": {
                                "id": 6008,
                                "name": "uint112",
                                "nodeType": "ElementaryTypeName",
                                "src": "10864:7:25",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 6012,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10864:11:25",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "src": "10852:23:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "10825:50:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "556e697377617056323a204f564552464c4f57",
                        "id": 6015,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10877:21:25",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a5d1f08cd66a1a59e841a286c7f2c877311b5d331d2315cd2fe3c5f05e833928",
                          "typeString": "literal_string \"UniswapV2: OVERFLOW\""
                        },
                        "value": "UniswapV2: OVERFLOW"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a5d1f08cd66a1a59e841a286c7f2c877311b5d331d2315cd2fe3c5f05e833928",
                          "typeString": "literal_string \"UniswapV2: OVERFLOW\""
                        }
                      ],
                      "id": 5999,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "10817:7:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6016,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10817:82:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6017,
                  "nodeType": "ExpressionStatement",
                  "src": "10817:82:25"
                },
                {
                  "assignments": [
                    6019
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6019,
                      "mutability": "mutable",
                      "name": "blockTimestamp",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6102,
                      "src": "10905:21:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 6018,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "10905:6:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6029,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 6027,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 6022,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -4,
                            "src": "10936:5:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 6023,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "10936:15:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "%",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_rational_4294967296_by_1",
                            "typeString": "int_const 4294967296"
                          },
                          "id": 6026,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 6024,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10954:1:25",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "**",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "3332",
                            "id": 6025,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10957:2:25",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_32_by_1",
                              "typeString": "int_const 32"
                            },
                            "value": "32"
                          },
                          "src": "10954:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_4294967296_by_1",
                            "typeString": "int_const 4294967296"
                          }
                        },
                        "src": "10936:23:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 6021,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "10929:6:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint32_$",
                        "typeString": "type(uint32)"
                      },
                      "typeName": {
                        "id": 6020,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "10929:6:25",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 6028,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10929:31:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10905:55:25"
                },
                {
                  "assignments": [
                    6031
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6031,
                      "mutability": "mutable",
                      "name": "timeElapsed",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6102,
                      "src": "10966:18:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 6030,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "10966:6:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6035,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    },
                    "id": 6034,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 6032,
                      "name": "blockTimestamp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6019,
                      "src": "10987:14:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 6033,
                      "name": "blockTimestampLast",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5824,
                      "src": "11004:18:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "src": "10987:35:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10966:56:25"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 6046,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 6042,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "id": 6038,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 6036,
                          "name": "timeElapsed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6031,
                          "src": "11055:11:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 6037,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11069:1:25",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "11055:15:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        },
                        "id": 6041,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 6039,
                          "name": "_reserve0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5994,
                          "src": "11074:9:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 6040,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11087:1:25",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "11074:14:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "11055:33:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "id": 6045,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 6043,
                        "name": "_reserve1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5996,
                        "src": "11092:9:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 6044,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11105:1:25",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "11092:14:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "11055:51:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 6078,
                  "nodeType": "IfStatement",
                  "src": "11051:310:25",
                  "trueBody": {
                    "id": 6077,
                    "nodeType": "Block",
                    "src": "11108:253:25",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 6060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 6047,
                            "name": "price0CumulativeLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5826,
                            "src": "11170:20:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6059,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 6055,
                                      "name": "_reserve0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5994,
                                      "src": "11233:9:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 6052,
                                          "name": "_reserve1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5996,
                                          "src": "11216:9:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 6050,
                                          "name": "UQ112x112",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7228,
                                          "src": "11199:9:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_UQ112x112_$7228_$",
                                            "typeString": "type(library UQ112x112)"
                                          }
                                        },
                                        "id": 6051,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "encode",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 7208,
                                        "src": "11199:16:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint112_$returns$_t_uint224_$",
                                          "typeString": "function (uint112) pure returns (uint224)"
                                        }
                                      },
                                      "id": 6053,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "11199:27:25",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint224",
                                        "typeString": "uint224"
                                      }
                                    },
                                    "id": 6054,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "uqdiv",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7227,
                                    "src": "11199:33:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint224_$_t_uint112_$returns$_t_uint224_$bound_to$_t_uint224_$",
                                      "typeString": "function (uint224,uint112) pure returns (uint224)"
                                    }
                                  },
                                  "id": 6056,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11199:44:25",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  }
                                ],
                                "id": 6049,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "11194:4:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 6048,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "11194:4:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 6057,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11194:50:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 6058,
                              "name": "timeElapsed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6031,
                              "src": "11247:11:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "src": "11194:64:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11170:88:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6061,
                        "nodeType": "ExpressionStatement",
                        "src": "11170:88:25"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 6075,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 6062,
                            "name": "price1CumulativeLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5828,
                            "src": "11266:20:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6074,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 6070,
                                      "name": "_reserve1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5996,
                                      "src": "11329:9:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 6067,
                                          "name": "_reserve0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5994,
                                          "src": "11312:9:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 6065,
                                          "name": "UQ112x112",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7228,
                                          "src": "11295:9:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_UQ112x112_$7228_$",
                                            "typeString": "type(library UQ112x112)"
                                          }
                                        },
                                        "id": 6066,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "encode",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 7208,
                                        "src": "11295:16:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint112_$returns$_t_uint224_$",
                                          "typeString": "function (uint112) pure returns (uint224)"
                                        }
                                      },
                                      "id": 6068,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "11295:27:25",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint224",
                                        "typeString": "uint224"
                                      }
                                    },
                                    "id": 6069,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "uqdiv",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7227,
                                    "src": "11295:33:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint224_$_t_uint112_$returns$_t_uint224_$bound_to$_t_uint224_$",
                                      "typeString": "function (uint224,uint112) pure returns (uint224)"
                                    }
                                  },
                                  "id": 6071,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11295:44:25",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  }
                                ],
                                "id": 6064,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "11290:4:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 6063,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "11290:4:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 6072,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11290:50:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 6073,
                              "name": "timeElapsed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6031,
                              "src": "11343:11:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "src": "11290:64:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11266:88:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6076,
                        "nodeType": "ExpressionStatement",
                        "src": "11266:88:25"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6084,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 6079,
                      "name": "reserve0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5820,
                      "src": "11366:8:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 6082,
                          "name": "balance0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5990,
                          "src": "11385:8:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 6081,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "11377:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint112_$",
                          "typeString": "type(uint112)"
                        },
                        "typeName": {
                          "id": 6080,
                          "name": "uint112",
                          "nodeType": "ElementaryTypeName",
                          "src": "11377:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 6083,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11377:17:25",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      }
                    },
                    "src": "11366:28:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint112",
                      "typeString": "uint112"
                    }
                  },
                  "id": 6085,
                  "nodeType": "ExpressionStatement",
                  "src": "11366:28:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6091,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 6086,
                      "name": "reserve1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5822,
                      "src": "11400:8:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 6089,
                          "name": "balance1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5992,
                          "src": "11419:8:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 6088,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "11411:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint112_$",
                          "typeString": "type(uint112)"
                        },
                        "typeName": {
                          "id": 6087,
                          "name": "uint112",
                          "nodeType": "ElementaryTypeName",
                          "src": "11411:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 6090,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11411:17:25",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      }
                    },
                    "src": "11400:28:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint112",
                      "typeString": "uint112"
                    }
                  },
                  "id": 6092,
                  "nodeType": "ExpressionStatement",
                  "src": "11400:28:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 6093,
                      "name": "blockTimestampLast",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5824,
                      "src": "11434:18:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 6094,
                      "name": "blockTimestamp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6019,
                      "src": "11455:14:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "src": "11434:35:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "id": 6096,
                  "nodeType": "ExpressionStatement",
                  "src": "11434:35:25"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6098,
                        "name": "reserve0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5820,
                        "src": "11485:8:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6099,
                        "name": "reserve1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5822,
                        "src": "11495:8:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        },
                        {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      ],
                      "id": 6097,
                      "name": "Sync",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5955,
                      "src": "11480:4:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint112_$_t_uint112_$returns$__$",
                        "typeString": "function (uint112,uint112)"
                      }
                    },
                    "id": 6100,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11480:24:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6101,
                  "nodeType": "EmitStatement",
                  "src": "11475:29:25"
                }
              ]
            },
            "documentation": null,
            "id": 6103,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_update",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5997,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5990,
                  "mutability": "mutable",
                  "name": "balance0",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6103,
                  "src": "10720:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5989,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10720:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5992,
                  "mutability": "mutable",
                  "name": "balance1",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6103,
                  "src": "10739:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5991,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10739:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5994,
                  "mutability": "mutable",
                  "name": "_reserve0",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6103,
                  "src": "10758:17:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint112",
                    "typeString": "uint112"
                  },
                  "typeName": {
                    "id": 5993,
                    "name": "uint112",
                    "nodeType": "ElementaryTypeName",
                    "src": "10758:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint112",
                      "typeString": "uint112"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5996,
                  "mutability": "mutable",
                  "name": "_reserve1",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6103,
                  "src": "10781:17:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint112",
                    "typeString": "uint112"
                  },
                  "typeName": {
                    "id": 5995,
                    "name": "uint112",
                    "nodeType": "ElementaryTypeName",
                    "src": "10781:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint112",
                      "typeString": "uint112"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10714:88:25"
            },
            "returnParameters": {
              "id": 5998,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10811:0:25"
            },
            "scope": 6848,
            "src": "10698:811:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 6210,
              "nodeType": "Block",
              "src": "11677:676:25",
              "statements": [
                {
                  "assignments": [
                    6113
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6113,
                      "mutability": "mutable",
                      "name": "feeTo",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6210,
                      "src": "11683:13:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6112,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "11683:7:25",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6119,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6115,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5814,
                            "src": "11737:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 6114,
                          "name": "MockUniswapV2FactoryIUniswapV2Factory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4952,
                          "src": "11699:37:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_MockUniswapV2FactoryIUniswapV2Factory_$4952_$",
                            "typeString": "type(contract MockUniswapV2FactoryIUniswapV2Factory)"
                          }
                        },
                        "id": 6116,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11699:46:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockUniswapV2FactoryIUniswapV2Factory_$4952",
                          "typeString": "contract MockUniswapV2FactoryIUniswapV2Factory"
                        }
                      },
                      "id": 6117,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "feeTo",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4906,
                      "src": "11699:52:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                        "typeString": "function () view external returns (address)"
                      }
                    },
                    "id": 6118,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11699:54:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11683:70:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6127,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 6120,
                      "name": "feeOn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6110,
                      "src": "11759:5:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 6126,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 6121,
                        "name": "feeTo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6113,
                        "src": "11767:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 6124,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11784:1:25",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 6123,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "11776:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 6122,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "11776:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 6125,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11776:10:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "11767:19:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "11759:27:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 6128,
                  "nodeType": "ExpressionStatement",
                  "src": "11759:27:25"
                },
                {
                  "assignments": [
                    6130
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6130,
                      "mutability": "mutable",
                      "name": "_kLast",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6210,
                      "src": "11792:11:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6129,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11792:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6132,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 6131,
                    "name": "kLast",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5830,
                    "src": "11806:5:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11792:19:25"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 6133,
                    "name": "feeOn",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6110,
                    "src": "11836:5:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 6202,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 6200,
                        "name": "_kLast",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6130,
                        "src": "12312:6:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 6201,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12322:1:25",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "12312:11:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": null,
                    "id": 6208,
                    "nodeType": "IfStatement",
                    "src": "12308:41:25",
                    "trueBody": {
                      "id": 6207,
                      "nodeType": "Block",
                      "src": "12325:24:25",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 6205,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 6203,
                              "name": "kLast",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5830,
                              "src": "12333:5:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 6204,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12341:1:25",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "12333:9:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6206,
                          "nodeType": "ExpressionStatement",
                          "src": "12333:9:25"
                        }
                      ]
                    }
                  },
                  "id": 6209,
                  "nodeType": "IfStatement",
                  "src": "11832:517:25",
                  "trueBody": {
                    "id": 6199,
                    "nodeType": "Block",
                    "src": "11843:459:25",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6136,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 6134,
                            "name": "_kLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6130,
                            "src": "11855:6:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 6135,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11865:1:25",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "11855:11:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 6198,
                        "nodeType": "IfStatement",
                        "src": "11851:445:25",
                        "trueBody": {
                          "id": 6197,
                          "nodeType": "Block",
                          "src": "11868:428:25",
                          "statements": [
                            {
                              "assignments": [
                                6138
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6138,
                                  "mutability": "mutable",
                                  "name": "rootK",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 6197,
                                  "src": "11878:10:25",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 6137,
                                    "name": "uint",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11878:4:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6149,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 6146,
                                        "name": "_reserve1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6107,
                                        "src": "11940:9:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint112",
                                          "typeString": "uint112"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint112",
                                          "typeString": "uint112"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 6143,
                                            "name": "_reserve0",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6105,
                                            "src": "11925:9:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          ],
                                          "id": 6142,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "11920:4:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          },
                                          "typeName": {
                                            "id": 6141,
                                            "name": "uint",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "11920:4:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 6144,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "11920:15:25",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 6145,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7111,
                                      "src": "11920:19:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 6147,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11920:30:25",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 6139,
                                    "name": "MockUniswapV2FactoryMah",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7186,
                                    "src": "11891:23:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_MockUniswapV2FactoryMah_$7186_$",
                                      "typeString": "type(library MockUniswapV2FactoryMah)"
                                    }
                                  },
                                  "id": 6140,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sqrt",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7185,
                                  "src": "11891:28:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 6148,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11891:60:25",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "11878:73:25"
                            },
                            {
                              "assignments": [
                                6151
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6151,
                                  "mutability": "mutable",
                                  "name": "rootKLast",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 6197,
                                  "src": "11961:14:25",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 6150,
                                    "name": "uint",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11961:4:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6156,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 6154,
                                    "name": "_kLast",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6130,
                                    "src": "12007:6:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 6152,
                                    "name": "MockUniswapV2FactoryMah",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7186,
                                    "src": "11978:23:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_MockUniswapV2FactoryMah_$7186_$",
                                      "typeString": "type(library MockUniswapV2FactoryMah)"
                                    }
                                  },
                                  "id": 6153,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sqrt",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7185,
                                  "src": "11978:28:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 6155,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11978:36:25",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "11961:53:25"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6159,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 6157,
                                  "name": "rootK",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6138,
                                  "src": "12028:5:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 6158,
                                  "name": "rootKLast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6151,
                                  "src": "12036:9:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12028:17:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 6196,
                              "nodeType": "IfStatement",
                              "src": "12024:264:25",
                              "trueBody": {
                                "id": 6195,
                                "nodeType": "Block",
                                "src": "12047:241:25",
                                "statements": [
                                  {
                                    "assignments": [
                                      6161
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 6161,
                                        "mutability": "mutable",
                                        "name": "numerator",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 6195,
                                        "src": "12059:14:25",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 6160,
                                          "name": "uint",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "12059:4:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 6169,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 6166,
                                              "name": "rootKLast",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6151,
                                              "src": "12102:9:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 6164,
                                              "name": "rootK",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6138,
                                              "src": "12092:5:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 6165,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "sub",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 7083,
                                            "src": "12092:9:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 6167,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "12092:20:25",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 6162,
                                          "name": "totalSupply",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5416,
                                          "src": "12076:11:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 6163,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 7111,
                                        "src": "12076:15:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 6168,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12076:37:25",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "12059:54:25"
                                  },
                                  {
                                    "assignments": [
                                      6171
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 6171,
                                        "mutability": "mutable",
                                        "name": "denominator",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 6195,
                                        "src": "12125:16:25",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 6170,
                                          "name": "uint",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "12125:4:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 6179,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 6177,
                                          "name": "rootKLast",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6151,
                                          "src": "12161:9:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "hexValue": "35",
                                              "id": 6174,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "12154:1:25",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_5_by_1",
                                                "typeString": "int_const 5"
                                              },
                                              "value": "5"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_rational_5_by_1",
                                                "typeString": "int_const 5"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 6172,
                                              "name": "rootK",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6138,
                                              "src": "12144:5:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 6173,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "mul",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 7111,
                                            "src": "12144:9:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 6175,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "12144:12:25",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 6176,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "add",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 7061,
                                        "src": "12144:16:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 6178,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12144:27:25",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "12125:46:25"
                                  },
                                  {
                                    "assignments": [
                                      6181
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 6181,
                                        "mutability": "mutable",
                                        "name": "liquidity",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 6195,
                                        "src": "12183:14:25",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 6180,
                                          "name": "uint",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "12183:4:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 6185,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 6184,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 6182,
                                        "name": "numerator",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6161,
                                        "src": "12200:9:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 6183,
                                        "name": "denominator",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6171,
                                        "src": "12212:11:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "12200:23:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "12183:40:25"
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 6188,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 6186,
                                        "name": "liquidity",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6181,
                                        "src": "12239:9:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 6187,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "12251:1:25",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "12239:13:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 6194,
                                    "nodeType": "IfStatement",
                                    "src": "12235:42:25",
                                    "trueBody": {
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 6190,
                                            "name": "feeTo",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6113,
                                            "src": "12260:5:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 6191,
                                            "name": "liquidity",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6181,
                                            "src": "12267:9:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 6189,
                                          "name": "_mint",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5522,
                                          "src": "12254:5:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                            "typeString": "function (address,uint256)"
                                          }
                                        },
                                        "id": 6192,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12254:23:25",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 6193,
                                      "nodeType": "ExpressionStatement",
                                      "src": "12254:23:25"
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 6211,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_mintFee",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6108,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6105,
                  "mutability": "mutable",
                  "name": "_reserve0",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6211,
                  "src": "11610:17:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint112",
                    "typeString": "uint112"
                  },
                  "typeName": {
                    "id": 6104,
                    "name": "uint112",
                    "nodeType": "ElementaryTypeName",
                    "src": "11610:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint112",
                      "typeString": "uint112"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6107,
                  "mutability": "mutable",
                  "name": "_reserve1",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6211,
                  "src": "11629:17:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint112",
                    "typeString": "uint112"
                  },
                  "typeName": {
                    "id": 6106,
                    "name": "uint112",
                    "nodeType": "ElementaryTypeName",
                    "src": "11629:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint112",
                      "typeString": "uint112"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11609:38:25"
            },
            "returnParameters": {
              "id": 6111,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6110,
                  "mutability": "mutable",
                  "name": "feeOn",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6211,
                  "src": "11665:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 6109,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11665:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11664:12:25"
            },
            "scope": 6848,
            "src": "11592:761:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 6359,
              "nodeType": "Block",
              "src": "12523:1178:25",
              "statements": [
                {
                  "assignments": [
                    6221,
                    6223,
                    null
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6221,
                      "mutability": "mutable",
                      "name": "_reserve0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6359,
                      "src": "12530:17:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 6220,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "12530:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6223,
                      "mutability": "mutable",
                      "name": "_reserve1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6359,
                      "src": "12549:17:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 6222,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "12549:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    null
                  ],
                  "id": 6226,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 6224,
                      "name": "getReserves",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5874,
                      "src": "12572:11:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                        "typeString": "function () view returns (uint112,uint112,uint32)"
                      }
                    },
                    "id": 6225,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12572:13:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                      "typeString": "tuple(uint112,uint112,uint32)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12529:56:25"
                },
                {
                  "assignments": [
                    6228
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6228,
                      "mutability": "mutable",
                      "name": "balance0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6359,
                      "src": "12606:13:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6227,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12606:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6238,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6235,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "12675:4:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MockUniswapV2FactoryUniswapV2Pair_$6848",
                              "typeString": "contract MockUniswapV2FactoryUniswapV2Pair"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_MockUniswapV2FactoryUniswapV2Pair_$6848",
                              "typeString": "contract MockUniswapV2FactoryUniswapV2Pair"
                            }
                          ],
                          "id": 6234,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "12667:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 6233,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "12667:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 6236,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12667:13:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6230,
                            "name": "token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5816,
                            "src": "12649:6:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 6229,
                          "name": "MockUniswapV2FactoryIERC20",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5390,
                          "src": "12622:26:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_MockUniswapV2FactoryIERC20_$5390_$",
                            "typeString": "type(contract MockUniswapV2FactoryIERC20)"
                          }
                        },
                        "id": 6231,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12622:34:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockUniswapV2FactoryIERC20_$5390",
                          "typeString": "contract MockUniswapV2FactoryIERC20"
                        }
                      },
                      "id": 6232,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "balanceOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5351,
                      "src": "12622:44:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 6237,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12622:59:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12606:75:25"
                },
                {
                  "assignments": [
                    6240
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6240,
                      "mutability": "mutable",
                      "name": "balance1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6359,
                      "src": "12687:13:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6239,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12687:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6250,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6247,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "12756:4:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MockUniswapV2FactoryUniswapV2Pair_$6848",
                              "typeString": "contract MockUniswapV2FactoryUniswapV2Pair"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_MockUniswapV2FactoryUniswapV2Pair_$6848",
                              "typeString": "contract MockUniswapV2FactoryUniswapV2Pair"
                            }
                          ],
                          "id": 6246,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "12748:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 6245,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "12748:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 6248,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12748:13:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6242,
                            "name": "token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5818,
                            "src": "12730:6:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 6241,
                          "name": "MockUniswapV2FactoryIERC20",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5390,
                          "src": "12703:26:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_MockUniswapV2FactoryIERC20_$5390_$",
                            "typeString": "type(contract MockUniswapV2FactoryIERC20)"
                          }
                        },
                        "id": 6243,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12703:34:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockUniswapV2FactoryIERC20_$5390",
                          "typeString": "contract MockUniswapV2FactoryIERC20"
                        }
                      },
                      "id": 6244,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "balanceOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5351,
                      "src": "12703:44:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 6249,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12703:59:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12687:75:25"
                },
                {
                  "assignments": [
                    6252
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6252,
                      "mutability": "mutable",
                      "name": "amount0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6359,
                      "src": "12768:12:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6251,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12768:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6257,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6255,
                        "name": "_reserve0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6221,
                        "src": "12796:9:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 6253,
                        "name": "balance0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6228,
                        "src": "12783:8:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 6254,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sub",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7083,
                      "src": "12783:12:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 6256,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12783:23:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12768:38:25"
                },
                {
                  "assignments": [
                    6259
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6259,
                      "mutability": "mutable",
                      "name": "amount1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6359,
                      "src": "12812:12:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6258,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12812:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6264,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6262,
                        "name": "_reserve1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6223,
                        "src": "12840:9:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 6260,
                        "name": "balance1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6240,
                        "src": "12827:8:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 6261,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sub",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7083,
                      "src": "12827:12:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 6263,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12827:23:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12812:38:25"
                },
                {
                  "assignments": [
                    6266
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6266,
                      "mutability": "mutable",
                      "name": "feeOn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6359,
                      "src": "12857:10:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6265,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "12857:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6271,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6268,
                        "name": "_reserve0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6221,
                        "src": "12879:9:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6269,
                        "name": "_reserve1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6223,
                        "src": "12890:9:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        },
                        {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      ],
                      "id": 6267,
                      "name": "_mintFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6211,
                      "src": "12870:8:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint112_$_t_uint112_$returns$_t_bool_$",
                        "typeString": "function (uint112,uint112) returns (bool)"
                      }
                    },
                    "id": 6270,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12870:30:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12857:43:25"
                },
                {
                  "assignments": [
                    6273
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6273,
                      "mutability": "mutable",
                      "name": "_totalSupply",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6359,
                      "src": "12906:17:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6272,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12906:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6275,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 6274,
                    "name": "totalSupply",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5416,
                    "src": "12926:11:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12906:31:25"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 6278,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 6276,
                      "name": "_totalSupply",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6273,
                      "src": "13025:12:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 6277,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "13041:1:25",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "13025:17:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 6319,
                    "nodeType": "Block",
                    "src": "13249:156:25",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 6317,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 6301,
                            "name": "liquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6218,
                            "src": "13257:9:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6309,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 6306,
                                      "name": "_totalSupply",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6273,
                                      "src": "13318:12:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 6304,
                                      "name": "amount0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6252,
                                      "src": "13306:7:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6305,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7111,
                                    "src": "13306:11:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 6307,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13306:25:25",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 6308,
                                  "name": "_reserve0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6221,
                                  "src": "13334:9:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                },
                                "src": "13306:37:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6315,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 6312,
                                      "name": "_totalSupply",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6273,
                                      "src": "13365:12:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 6310,
                                      "name": "amount1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6259,
                                      "src": "13353:7:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6311,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7111,
                                    "src": "13353:11:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 6313,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13353:25:25",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 6314,
                                  "name": "_reserve1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6223,
                                  "src": "13381:9:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                },
                                "src": "13353:37:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 6302,
                                "name": "MockUniswapV2FactoryMah",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7186,
                                "src": "13269:23:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MockUniswapV2FactoryMah_$7186_$",
                                  "typeString": "type(library MockUniswapV2FactoryMah)"
                                }
                              },
                              "id": 6303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "min",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7131,
                              "src": "13269:27:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 6316,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13269:129:25",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13257:141:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6318,
                        "nodeType": "ExpressionStatement",
                        "src": "13257:141:25"
                      }
                    ]
                  },
                  "id": 6320,
                  "nodeType": "IfStatement",
                  "src": "13021:384:25",
                  "trueBody": {
                    "id": 6300,
                    "nodeType": "Block",
                    "src": "13044:199:25",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 6290,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 6279,
                            "name": "liquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6218,
                            "src": "13052:9:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 6288,
                                "name": "MINIMUM_LIQUIDITY",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5801,
                                "src": "13119:17:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 6284,
                                        "name": "amount1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6259,
                                        "src": "13105:7:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 6282,
                                        "name": "amount0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6252,
                                        "src": "13093:7:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 6283,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7111,
                                      "src": "13093:11:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 6285,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13093:20:25",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 6280,
                                    "name": "MockUniswapV2FactoryMah",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7186,
                                    "src": "13064:23:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_MockUniswapV2FactoryMah_$7186_$",
                                      "typeString": "type(library MockUniswapV2FactoryMah)"
                                    }
                                  },
                                  "id": 6281,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sqrt",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7185,
                                  "src": "13064:28:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 6286,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13064:50:25",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6287,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7083,
                              "src": "13064:54:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 6289,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13064:73:25",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13052:85:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6291,
                        "nodeType": "ExpressionStatement",
                        "src": "13052:85:25"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 6295,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13159:1:25",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 6294,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "13151:7:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 6293,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "13151:7:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 6296,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13151:10:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 6297,
                              "name": "MINIMUM_LIQUIDITY",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5801,
                              "src": "13163:17:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6292,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5522,
                            "src": "13145:5:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 6298,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13145:36:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6299,
                        "nodeType": "ExpressionStatement",
                        "src": "13145:36:25"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 6324,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 6322,
                          "name": "liquidity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6218,
                          "src": "13418:9:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 6323,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "13430:1:25",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "13418:13:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544",
                        "id": 6325,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13433:42:25",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6591c9f5bf1fefaad109b76a20e25c857b696080c952191f86220f001a83663e",
                          "typeString": "literal_string \"UniswapV2: INSUFFICIENT_LIQUIDITY_MINTED\""
                        },
                        "value": "UniswapV2: INSUFFICIENT_LIQUIDITY_MINTED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6591c9f5bf1fefaad109b76a20e25c857b696080c952191f86220f001a83663e",
                          "typeString": "literal_string \"UniswapV2: INSUFFICIENT_LIQUIDITY_MINTED\""
                        }
                      ],
                      "id": 6321,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "13410:7:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6326,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13410:66:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6327,
                  "nodeType": "ExpressionStatement",
                  "src": "13410:66:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6329,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6213,
                        "src": "13488:2:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6330,
                        "name": "liquidity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6218,
                        "src": "13492:9:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 6328,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5522,
                      "src": "13482:5:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 6331,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13482:20:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6332,
                  "nodeType": "ExpressionStatement",
                  "src": "13482:20:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6334,
                        "name": "balance0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6228,
                        "src": "13517:8:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6335,
                        "name": "balance1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6240,
                        "src": "13527:8:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6336,
                        "name": "_reserve0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6221,
                        "src": "13537:9:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6337,
                        "name": "_reserve1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6223,
                        "src": "13548:9:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        },
                        {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      ],
                      "id": 6333,
                      "name": "_update",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6103,
                      "src": "13509:7:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint112_$_t_uint112_$returns$__$",
                        "typeString": "function (uint256,uint256,uint112,uint112)"
                      }
                    },
                    "id": 6338,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13509:49:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6339,
                  "nodeType": "ExpressionStatement",
                  "src": "13509:49:25"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 6340,
                    "name": "feeOn",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6266,
                    "src": "13568:5:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 6351,
                  "nodeType": "IfStatement",
                  "src": "13564:47:25",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 6349,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 6341,
                        "name": "kLast",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5830,
                        "src": "13575:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6347,
                            "name": "reserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5822,
                            "src": "13602:8:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 6344,
                                "name": "reserve0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5820,
                                "src": "13588:8:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              ],
                              "id": 6343,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "13583:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 6342,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "13583:4:25",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 6345,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13583:14:25",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6346,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7111,
                          "src": "13583:18:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 6348,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13583:28:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "13575:36:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 6350,
                    "nodeType": "ExpressionStatement",
                    "src": "13575:36:25"
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 6353,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "13667:3:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 6354,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "13667:10:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6355,
                        "name": "amount0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6252,
                        "src": "13679:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6356,
                        "name": "amount1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6259,
                        "src": "13688:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 6352,
                      "name": "Mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5925,
                      "src": "13662:4:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256)"
                      }
                    },
                    "id": 6357,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13662:34:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6358,
                  "nodeType": "EmitStatement",
                  "src": "13657:39:25"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "6a627842",
            "id": 6360,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 6216,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6215,
                  "name": "lock",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5852,
                  "src": "12493:4:25",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "12493:4:25"
              }
            ],
            "name": "mint",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6214,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6213,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6360,
                  "src": "12472:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6212,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12472:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12471:12:25"
            },
            "returnParameters": {
              "id": 6219,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6218,
                  "mutability": "mutable",
                  "name": "liquidity",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6360,
                  "src": "12507:14:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6217,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "12507:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12506:16:25"
            },
            "scope": 6848,
            "src": "12458:1243:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 6530,
              "nodeType": "Block",
              "src": "13883:1308:25",
              "statements": [
                {
                  "assignments": [
                    6372,
                    6374,
                    null
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6372,
                      "mutability": "mutable",
                      "name": "_reserve0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6530,
                      "src": "13890:17:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 6371,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "13890:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6374,
                      "mutability": "mutable",
                      "name": "_reserve1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6530,
                      "src": "13909:17:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 6373,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "13909:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    null
                  ],
                  "id": 6377,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 6375,
                      "name": "getReserves",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5874,
                      "src": "13932:11:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                        "typeString": "function () view returns (uint112,uint112,uint32)"
                      }
                    },
                    "id": 6376,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13932:13:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                      "typeString": "tuple(uint112,uint112,uint32)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13889:56:25"
                },
                {
                  "assignments": [
                    6379
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6379,
                      "mutability": "mutable",
                      "name": "_token0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6530,
                      "src": "13966:15:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6378,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "13966:7:25",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6381,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 6380,
                    "name": "token0",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5816,
                    "src": "13984:6:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13966:24:25"
                },
                {
                  "assignments": [
                    6383
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6383,
                      "mutability": "mutable",
                      "name": "_token1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6530,
                      "src": "14011:15:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6382,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "14011:7:25",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6385,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 6384,
                    "name": "token1",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5818,
                    "src": "14029:6:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14011:24:25"
                },
                {
                  "assignments": [
                    6387
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6387,
                      "mutability": "mutable",
                      "name": "balance0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6530,
                      "src": "14056:13:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6386,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "14056:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6397,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6394,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "14126:4:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MockUniswapV2FactoryUniswapV2Pair_$6848",
                              "typeString": "contract MockUniswapV2FactoryUniswapV2Pair"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_MockUniswapV2FactoryUniswapV2Pair_$6848",
                              "typeString": "contract MockUniswapV2FactoryUniswapV2Pair"
                            }
                          ],
                          "id": 6393,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "14118:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 6392,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "14118:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 6395,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14118:13:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6389,
                            "name": "_token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6379,
                            "src": "14099:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 6388,
                          "name": "MockUniswapV2FactoryIERC20",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5390,
                          "src": "14072:26:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_MockUniswapV2FactoryIERC20_$5390_$",
                            "typeString": "type(contract MockUniswapV2FactoryIERC20)"
                          }
                        },
                        "id": 6390,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14072:35:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockUniswapV2FactoryIERC20_$5390",
                          "typeString": "contract MockUniswapV2FactoryIERC20"
                        }
                      },
                      "id": 6391,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "balanceOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5351,
                      "src": "14072:45:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 6396,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14072:60:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14056:76:25"
                },
                {
                  "assignments": [
                    6399
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6399,
                      "mutability": "mutable",
                      "name": "balance1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6530,
                      "src": "14138:13:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6398,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "14138:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6409,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6406,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "14208:4:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MockUniswapV2FactoryUniswapV2Pair_$6848",
                              "typeString": "contract MockUniswapV2FactoryUniswapV2Pair"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_MockUniswapV2FactoryUniswapV2Pair_$6848",
                              "typeString": "contract MockUniswapV2FactoryUniswapV2Pair"
                            }
                          ],
                          "id": 6405,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "14200:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 6404,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "14200:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 6407,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14200:13:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6401,
                            "name": "_token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6383,
                            "src": "14181:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 6400,
                          "name": "MockUniswapV2FactoryIERC20",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5390,
                          "src": "14154:26:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_MockUniswapV2FactoryIERC20_$5390_$",
                            "typeString": "type(contract MockUniswapV2FactoryIERC20)"
                          }
                        },
                        "id": 6402,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14154:35:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockUniswapV2FactoryIERC20_$5390",
                          "typeString": "contract MockUniswapV2FactoryIERC20"
                        }
                      },
                      "id": 6403,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "balanceOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5351,
                      "src": "14154:45:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 6408,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14154:60:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14138:76:25"
                },
                {
                  "assignments": [
                    6411
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6411,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6530,
                      "src": "14220:14:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6410,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "14220:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6418,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 6412,
                      "name": "balanceOf",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5420,
                      "src": "14237:9:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 6417,
                    "indexExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 6415,
                          "name": "this",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -28,
                          "src": "14255:4:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_MockUniswapV2FactoryUniswapV2Pair_$6848",
                            "typeString": "contract MockUniswapV2FactoryUniswapV2Pair"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_MockUniswapV2FactoryUniswapV2Pair_$6848",
                            "typeString": "contract MockUniswapV2FactoryUniswapV2Pair"
                          }
                        ],
                        "id": 6414,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "14247:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 6413,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14247:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 6416,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14247:13:25",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "14237:24:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14220:41:25"
                },
                {
                  "assignments": [
                    6420
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6420,
                      "mutability": "mutable",
                      "name": "feeOn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6530,
                      "src": "14268:10:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6419,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "14268:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6425,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6422,
                        "name": "_reserve0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6372,
                        "src": "14290:9:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6423,
                        "name": "_reserve1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6374,
                        "src": "14301:9:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        },
                        {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      ],
                      "id": 6421,
                      "name": "_mintFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6211,
                      "src": "14281:8:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint112_$_t_uint112_$returns$_t_bool_$",
                        "typeString": "function (uint112,uint112) returns (bool)"
                      }
                    },
                    "id": 6424,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14281:30:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14268:43:25"
                },
                {
                  "assignments": [
                    6427
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6427,
                      "mutability": "mutable",
                      "name": "_totalSupply",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6530,
                      "src": "14317:17:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6426,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "14317:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6429,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 6428,
                    "name": "totalSupply",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5416,
                    "src": "14337:11:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14317:31:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6437,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 6430,
                      "name": "amount0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6367,
                      "src": "14432:7:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 6436,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6433,
                            "name": "balance0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6387,
                            "src": "14456:8:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 6431,
                            "name": "liquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6411,
                            "src": "14442:9:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6432,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7111,
                          "src": "14442:13:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 6434,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14442:23:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "/",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 6435,
                        "name": "_totalSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6427,
                        "src": "14468:12:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "14442:38:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14432:48:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 6438,
                  "nodeType": "ExpressionStatement",
                  "src": "14432:48:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6446,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 6439,
                      "name": "amount1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6369,
                      "src": "14534:7:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 6445,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6442,
                            "name": "balance1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6399,
                            "src": "14558:8:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 6440,
                            "name": "liquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6411,
                            "src": "14544:9:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6441,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7111,
                          "src": "14544:13:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 6443,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14544:23:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "/",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 6444,
                        "name": "_totalSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6427,
                        "src": "14570:12:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "14544:38:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14534:48:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 6447,
                  "nodeType": "ExpressionStatement",
                  "src": "14534:48:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 6455,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6451,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 6449,
                            "name": "amount0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6367,
                            "src": "14644:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 6450,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14654:1:25",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "14644:11:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6454,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 6452,
                            "name": "amount1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6369,
                            "src": "14659:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 6453,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14669:1:25",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "14659:11:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "14644:26:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544",
                        "id": 6456,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14672:42:25",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_57ebfb4dd8b5082cdba0f23c17077e3b0ecb9782a51e0e9a15e9bc8c4b30c562",
                          "typeString": "literal_string \"UniswapV2: INSUFFICIENT_LIQUIDITY_BURNED\""
                        },
                        "value": "UniswapV2: INSUFFICIENT_LIQUIDITY_BURNED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_57ebfb4dd8b5082cdba0f23c17077e3b0ecb9782a51e0e9a15e9bc8c4b30c562",
                          "typeString": "literal_string \"UniswapV2: INSUFFICIENT_LIQUIDITY_BURNED\""
                        }
                      ],
                      "id": 6448,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "14636:7:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6457,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14636:79:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6458,
                  "nodeType": "ExpressionStatement",
                  "src": "14636:79:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6462,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "14735:4:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MockUniswapV2FactoryUniswapV2Pair_$6848",
                              "typeString": "contract MockUniswapV2FactoryUniswapV2Pair"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_MockUniswapV2FactoryUniswapV2Pair_$6848",
                              "typeString": "contract MockUniswapV2FactoryUniswapV2Pair"
                            }
                          ],
                          "id": 6461,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "14727:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 6460,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "14727:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 6463,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14727:13:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6464,
                        "name": "liquidity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6411,
                        "src": "14742:9:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 6459,
                      "name": "_burn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5557,
                      "src": "14721:5:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 6465,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14721:31:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6466,
                  "nodeType": "ExpressionStatement",
                  "src": "14721:31:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6468,
                        "name": "_token0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6379,
                        "src": "14772:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6469,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6362,
                        "src": "14781:2:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6470,
                        "name": "amount0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6367,
                        "src": "14785:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 6467,
                      "name": "_safeTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5917,
                      "src": "14758:13:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 6471,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14758:35:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6472,
                  "nodeType": "ExpressionStatement",
                  "src": "14758:35:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6474,
                        "name": "_token1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6383,
                        "src": "14813:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6475,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6362,
                        "src": "14822:2:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6476,
                        "name": "amount1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6369,
                        "src": "14826:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 6473,
                      "name": "_safeTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5917,
                      "src": "14799:13:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 6477,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14799:35:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6478,
                  "nodeType": "ExpressionStatement",
                  "src": "14799:35:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6489,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 6479,
                      "name": "balance0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6387,
                      "src": "14840:8:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 6486,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -28,
                              "src": "14905:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_MockUniswapV2FactoryUniswapV2Pair_$6848",
                                "typeString": "contract MockUniswapV2FactoryUniswapV2Pair"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_MockUniswapV2FactoryUniswapV2Pair_$6848",
                                "typeString": "contract MockUniswapV2FactoryUniswapV2Pair"
                              }
                            ],
                            "id": 6485,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "14897:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 6484,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "14897:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 6487,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14897:13:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 6481,
                              "name": "_token0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6379,
                              "src": "14878:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 6480,
                            "name": "MockUniswapV2FactoryIERC20",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5390,
                            "src": "14851:26:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MockUniswapV2FactoryIERC20_$5390_$",
                              "typeString": "type(contract MockUniswapV2FactoryIERC20)"
                            }
                          },
                          "id": 6482,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14851:35:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_MockUniswapV2FactoryIERC20_$5390",
                            "typeString": "contract MockUniswapV2FactoryIERC20"
                          }
                        },
                        "id": 6483,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "balanceOf",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5351,
                        "src": "14851:45:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                          "typeString": "function (address) view external returns (uint256)"
                        }
                      },
                      "id": 6488,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14851:60:25",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14840:71:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 6490,
                  "nodeType": "ExpressionStatement",
                  "src": "14840:71:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6501,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 6491,
                      "name": "balance1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6399,
                      "src": "14917:8:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 6498,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -28,
                              "src": "14982:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_MockUniswapV2FactoryUniswapV2Pair_$6848",
                                "typeString": "contract MockUniswapV2FactoryUniswapV2Pair"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_MockUniswapV2FactoryUniswapV2Pair_$6848",
                                "typeString": "contract MockUniswapV2FactoryUniswapV2Pair"
                              }
                            ],
                            "id": 6497,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "14974:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 6496,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "14974:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 6499,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14974:13:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 6493,
                              "name": "_token1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6383,
                              "src": "14955:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 6492,
                            "name": "MockUniswapV2FactoryIERC20",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5390,
                            "src": "14928:26:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MockUniswapV2FactoryIERC20_$5390_$",
                              "typeString": "type(contract MockUniswapV2FactoryIERC20)"
                            }
                          },
                          "id": 6494,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14928:35:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_MockUniswapV2FactoryIERC20_$5390",
                            "typeString": "contract MockUniswapV2FactoryIERC20"
                          }
                        },
                        "id": 6495,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "balanceOf",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5351,
                        "src": "14928:45:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                          "typeString": "function (address) view external returns (uint256)"
                        }
                      },
                      "id": 6500,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14928:60:25",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14917:71:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 6502,
                  "nodeType": "ExpressionStatement",
                  "src": "14917:71:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6504,
                        "name": "balance0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6387,
                        "src": "15003:8:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6505,
                        "name": "balance1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6399,
                        "src": "15013:8:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6506,
                        "name": "_reserve0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6372,
                        "src": "15023:9:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6507,
                        "name": "_reserve1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6374,
                        "src": "15034:9:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        },
                        {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      ],
                      "id": 6503,
                      "name": "_update",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6103,
                      "src": "14995:7:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint112_$_t_uint112_$returns$__$",
                        "typeString": "function (uint256,uint256,uint112,uint112)"
                      }
                    },
                    "id": 6508,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14995:49:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6509,
                  "nodeType": "ExpressionStatement",
                  "src": "14995:49:25"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 6510,
                    "name": "feeOn",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6420,
                    "src": "15054:5:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 6521,
                  "nodeType": "IfStatement",
                  "src": "15050:47:25",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 6519,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 6511,
                        "name": "kLast",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5830,
                        "src": "15061:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6517,
                            "name": "reserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5822,
                            "src": "15088:8:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 6514,
                                "name": "reserve0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5820,
                                "src": "15074:8:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              ],
                              "id": 6513,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "15069:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 6512,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "15069:4:25",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 6515,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15069:14:25",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6516,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7111,
                          "src": "15069:18:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 6518,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15069:28:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "15061:36:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 6520,
                    "nodeType": "ExpressionStatement",
                    "src": "15061:36:25"
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 6523,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "15153:3:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 6524,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "15153:10:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6525,
                        "name": "amount0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6367,
                        "src": "15165:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6526,
                        "name": "amount1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6369,
                        "src": "15174:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6527,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6362,
                        "src": "15183:2:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 6522,
                      "name": "Burn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5935,
                      "src": "15148:4:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (address,uint256,uint256,address)"
                      }
                    },
                    "id": 6528,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15148:38:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6529,
                  "nodeType": "EmitStatement",
                  "src": "15143:43:25"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "89afcb44",
            "id": 6531,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 6365,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6364,
                  "name": "lock",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5852,
                  "src": "13841:4:25",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "13841:4:25"
              }
            ],
            "name": "burn",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6363,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6362,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6531,
                  "src": "13820:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6361,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13820:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13819:12:25"
            },
            "returnParameters": {
              "id": 6370,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6367,
                  "mutability": "mutable",
                  "name": "amount0",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6531,
                  "src": "13855:12:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6366,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "13855:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6369,
                  "mutability": "mutable",
                  "name": "amount1",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6531,
                  "src": "13869:12:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6368,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "13869:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13854:28:25"
            },
            "scope": 6848,
            "src": "13806:1385:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 6767,
              "nodeType": "Block",
              "src": "15411:1771:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 6551,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6547,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 6545,
                            "name": "amount0Out",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6533,
                            "src": "15425:10:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 6546,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15438:1:25",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "15425:14:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6550,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 6548,
                            "name": "amount1Out",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6535,
                            "src": "15443:10:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 6549,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15456:1:25",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "15443:14:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "15425:32:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54",
                        "id": 6552,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15459:39:25",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_05339493da7e2cbe77e17beadf6b91132eb307939495f5f1797bf88d95539e83",
                          "typeString": "literal_string \"UniswapV2: INSUFFICIENT_OUTPUT_AMOUNT\""
                        },
                        "value": "UniswapV2: INSUFFICIENT_OUTPUT_AMOUNT"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_05339493da7e2cbe77e17beadf6b91132eb307939495f5f1797bf88d95539e83",
                          "typeString": "literal_string \"UniswapV2: INSUFFICIENT_OUTPUT_AMOUNT\""
                        }
                      ],
                      "id": 6544,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "15417:7:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6553,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15417:82:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6554,
                  "nodeType": "ExpressionStatement",
                  "src": "15417:82:25"
                },
                {
                  "assignments": [
                    6556,
                    6558,
                    null
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6556,
                      "mutability": "mutable",
                      "name": "_reserve0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6767,
                      "src": "15506:17:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 6555,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "15506:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6558,
                      "mutability": "mutable",
                      "name": "_reserve1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6767,
                      "src": "15525:17:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 6557,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "15525:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    null
                  ],
                  "id": 6561,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 6559,
                      "name": "getReserves",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5874,
                      "src": "15548:11:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                        "typeString": "function () view returns (uint112,uint112,uint32)"
                      }
                    },
                    "id": 6560,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15548:13:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                      "typeString": "tuple(uint112,uint112,uint32)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15505:56:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 6569,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6565,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 6563,
                            "name": "amount0Out",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6533,
                            "src": "15590:10:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 6564,
                            "name": "_reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6556,
                            "src": "15603:9:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "src": "15590:22:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 6566,
                            "name": "amount1Out",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6535,
                            "src": "15616:10:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 6567,
                            "name": "_reserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6558,
                            "src": "15629:9:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "src": "15616:22:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "15590:48:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "556e697377617056323a20494e53554646494349454e545f4c4951554944495459",
                        "id": 6570,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15640:35:25",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_3f354ef449b2a9b081220ce21f57691008110b653edc191d8288e60cef58bb5f",
                          "typeString": "literal_string \"UniswapV2: INSUFFICIENT_LIQUIDITY\""
                        },
                        "value": "UniswapV2: INSUFFICIENT_LIQUIDITY"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_3f354ef449b2a9b081220ce21f57691008110b653edc191d8288e60cef58bb5f",
                          "typeString": "literal_string \"UniswapV2: INSUFFICIENT_LIQUIDITY\""
                        }
                      ],
                      "id": 6562,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "15582:7:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6571,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15582:94:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6572,
                  "nodeType": "ExpressionStatement",
                  "src": "15582:94:25"
                },
                {
                  "assignments": [
                    6574
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6574,
                      "mutability": "mutable",
                      "name": "balance0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6767,
                      "src": "15683:13:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6573,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "15683:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6575,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15683:13:25"
                },
                {
                  "assignments": [
                    6577
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6577,
                      "mutability": "mutable",
                      "name": "balance1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6767,
                      "src": "15702:13:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6576,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "15702:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6578,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15702:13:25"
                },
                {
                  "id": 6658,
                  "nodeType": "Block",
                  "src": "15721:675:25",
                  "statements": [
                    {
                      "assignments": [
                        6580
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6580,
                          "mutability": "mutable",
                          "name": "_token0",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6658,
                          "src": "15790:15:25",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 6579,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "15790:7:25",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6582,
                      "initialValue": {
                        "argumentTypes": null,
                        "id": 6581,
                        "name": "token0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5816,
                        "src": "15808:6:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "15790:24:25"
                    },
                    {
                      "assignments": [
                        6584
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6584,
                          "mutability": "mutable",
                          "name": "_token1",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6658,
                          "src": "15822:15:25",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 6583,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "15822:7:25",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6586,
                      "initialValue": {
                        "argumentTypes": null,
                        "id": 6585,
                        "name": "token1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5818,
                        "src": "15840:6:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "15822:24:25"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 6594,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 6590,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 6588,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6537,
                                "src": "15862:2:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 6589,
                                "name": "_token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6580,
                                "src": "15868:7:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "15862:13:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 6593,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 6591,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6537,
                                "src": "15879:2:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 6592,
                                "name": "_token1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6584,
                                "src": "15885:7:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "15879:13:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "15862:30:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e697377617056323a20494e56414c49445f544f",
                            "id": 6595,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15894:23:25",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_25d395026e6e4dd4e9808c7d6d3dd1f45abaf4874ae71f7161fff58de03154d3",
                              "typeString": "literal_string \"UniswapV2: INVALID_TO\""
                            },
                            "value": "UniswapV2: INVALID_TO"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_25d395026e6e4dd4e9808c7d6d3dd1f45abaf4874ae71f7161fff58de03154d3",
                              "typeString": "literal_string \"UniswapV2: INVALID_TO\""
                            }
                          ],
                          "id": 6587,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "15854:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 6596,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15854:64:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6597,
                      "nodeType": "ExpressionStatement",
                      "src": "15854:64:25"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 6600,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 6598,
                          "name": "amount0Out",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6533,
                          "src": "15930:10:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 6599,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "15943:1:25",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "15930:14:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 6607,
                      "nodeType": "IfStatement",
                      "src": "15926:58:25",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 6602,
                              "name": "_token0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6580,
                              "src": "15960:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 6603,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6537,
                              "src": "15969:2:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 6604,
                              "name": "amount0Out",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6533,
                              "src": "15973:10:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6601,
                            "name": "_safeTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5917,
                            "src": "15946:13:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 6605,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15946:38:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6606,
                        "nodeType": "ExpressionStatement",
                        "src": "15946:38:25"
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 6610,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 6608,
                          "name": "amount1Out",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6535,
                          "src": "16030:10:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 6609,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "16043:1:25",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "16030:14:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 6617,
                      "nodeType": "IfStatement",
                      "src": "16026:58:25",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 6612,
                              "name": "_token1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6584,
                              "src": "16060:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 6613,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6537,
                              "src": "16069:2:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 6614,
                              "name": "amount1Out",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6535,
                              "src": "16073:10:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6611,
                            "name": "_safeTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5917,
                            "src": "16046:13:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 6615,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16046:38:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6616,
                        "nodeType": "ExpressionStatement",
                        "src": "16046:38:25"
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 6621,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 6618,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6539,
                            "src": "16130:4:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          },
                          "id": 6619,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "16130:11:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 6620,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "16144:1:25",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "16130:15:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 6633,
                      "nodeType": "IfStatement",
                      "src": "16126:105:25",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 6626,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "16190:3:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 6627,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "16190:10:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 6628,
                              "name": "amount0Out",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6533,
                              "src": "16202:10:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 6629,
                              "name": "amount1Out",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6535,
                              "src": "16214:10:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 6630,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6539,
                              "src": "16226:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6623,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6537,
                                  "src": "16172:2:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 6622,
                                "name": "IUniswapV2Callee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5402,
                                "src": "16155:16:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IUniswapV2Callee_$5402_$",
                                  "typeString": "type(contract IUniswapV2Callee)"
                                }
                              },
                              "id": 6624,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16155:20:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IUniswapV2Callee_$5402",
                                "typeString": "contract IUniswapV2Callee"
                              }
                            },
                            "id": 6625,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "uniswapV2Call",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5401,
                            "src": "16155:34:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256,uint256,bytes memory) external"
                            }
                          },
                          "id": 6631,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16155:76:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6632,
                        "nodeType": "ExpressionStatement",
                        "src": "16155:76:25"
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 6644,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 6634,
                          "name": "balance0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6574,
                          "src": "16239:8:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6641,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "16304:4:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MockUniswapV2FactoryUniswapV2Pair_$6848",
                                    "typeString": "contract MockUniswapV2FactoryUniswapV2Pair"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_MockUniswapV2FactoryUniswapV2Pair_$6848",
                                    "typeString": "contract MockUniswapV2FactoryUniswapV2Pair"
                                  }
                                ],
                                "id": 6640,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "16296:7:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 6639,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "16296:7:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 6642,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16296:13:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6636,
                                  "name": "_token0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6580,
                                  "src": "16277:7:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 6635,
                                "name": "MockUniswapV2FactoryIERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5390,
                                "src": "16250:26:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MockUniswapV2FactoryIERC20_$5390_$",
                                  "typeString": "type(contract MockUniswapV2FactoryIERC20)"
                                }
                              },
                              "id": 6637,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16250:35:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_MockUniswapV2FactoryIERC20_$5390",
                                "typeString": "contract MockUniswapV2FactoryIERC20"
                              }
                            },
                            "id": 6638,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5351,
                            "src": "16250:45:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 6643,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16250:60:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "16239:71:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 6645,
                      "nodeType": "ExpressionStatement",
                      "src": "16239:71:25"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 6656,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 6646,
                          "name": "balance1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6577,
                          "src": "16318:8:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6653,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "16383:4:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MockUniswapV2FactoryUniswapV2Pair_$6848",
                                    "typeString": "contract MockUniswapV2FactoryUniswapV2Pair"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_MockUniswapV2FactoryUniswapV2Pair_$6848",
                                    "typeString": "contract MockUniswapV2FactoryUniswapV2Pair"
                                  }
                                ],
                                "id": 6652,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "16375:7:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 6651,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "16375:7:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 6654,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16375:13:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6648,
                                  "name": "_token1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6584,
                                  "src": "16356:7:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 6647,
                                "name": "MockUniswapV2FactoryIERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5390,
                                "src": "16329:26:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MockUniswapV2FactoryIERC20_$5390_$",
                                  "typeString": "type(contract MockUniswapV2FactoryIERC20)"
                                }
                              },
                              "id": 6649,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16329:35:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_MockUniswapV2FactoryIERC20_$5390",
                                "typeString": "contract MockUniswapV2FactoryIERC20"
                              }
                            },
                            "id": 6650,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5351,
                            "src": "16329:45:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 6655,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16329:60:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "16318:71:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 6657,
                      "nodeType": "ExpressionStatement",
                      "src": "16318:71:25"
                    }
                  ]
                },
                {
                  "assignments": [
                    6660
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6660,
                      "mutability": "mutable",
                      "name": "amount0In",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6767,
                      "src": "16401:14:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6659,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "16401:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6674,
                  "initialValue": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 6665,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 6661,
                        "name": "balance0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6574,
                        "src": "16418:8:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 6664,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 6662,
                          "name": "_reserve0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6556,
                          "src": "16429:9:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 6663,
                          "name": "amount0Out",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6533,
                          "src": "16441:10:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "16429:22:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "16418:33:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 6672,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "16492:1:25",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "id": 6673,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "16418:75:25",
                    "trueExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 6671,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 6666,
                        "name": "balance0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6574,
                        "src": "16454:8:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6669,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 6667,
                              "name": "_reserve0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6556,
                              "src": "16466:9:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 6668,
                              "name": "amount0Out",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6533,
                              "src": "16478:10:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "16466:22:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 6670,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "16465:24:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "16454:35:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16401:92:25"
                },
                {
                  "assignments": [
                    6676
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6676,
                      "mutability": "mutable",
                      "name": "amount1In",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6767,
                      "src": "16499:14:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6675,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "16499:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6690,
                  "initialValue": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 6681,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 6677,
                        "name": "balance1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6577,
                        "src": "16516:8:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 6680,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 6678,
                          "name": "_reserve1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6558,
                          "src": "16527:9:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 6679,
                          "name": "amount1Out",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6535,
                          "src": "16539:10:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "16527:22:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "16516:33:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 6688,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "16590:1:25",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "id": 6689,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "16516:75:25",
                    "trueExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 6687,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 6682,
                        "name": "balance1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6577,
                        "src": "16552:8:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6685,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 6683,
                              "name": "_reserve1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6558,
                              "src": "16564:9:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 6684,
                              "name": "amount1Out",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6535,
                              "src": "16576:10:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "16564:22:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 6686,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "16563:24:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "16552:35:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16499:92:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 6698,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6694,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 6692,
                            "name": "amount0In",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6660,
                            "src": "16605:9:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 6693,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16617:1:25",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "16605:13:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6697,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 6695,
                            "name": "amount1In",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6676,
                            "src": "16622:9:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 6696,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16634:1:25",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "16622:13:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "16605:30:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54",
                        "id": 6699,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "16637:38:25",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_10e2efc32d8a31d3b2c11a545b3ed09c2dbabc58ef6de4033929d0002e425b67",
                          "typeString": "literal_string \"UniswapV2: INSUFFICIENT_INPUT_AMOUNT\""
                        },
                        "value": "UniswapV2: INSUFFICIENT_INPUT_AMOUNT"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_10e2efc32d8a31d3b2c11a545b3ed09c2dbabc58ef6de4033929d0002e425b67",
                          "typeString": "literal_string \"UniswapV2: INSUFFICIENT_INPUT_AMOUNT\""
                        }
                      ],
                      "id": 6691,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "16597:7:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6700,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16597:79:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6701,
                  "nodeType": "ExpressionStatement",
                  "src": "16597:79:25"
                },
                {
                  "id": 6749,
                  "nodeType": "Block",
                  "src": "16682:363:25",
                  "statements": [
                    {
                      "assignments": [
                        6703
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6703,
                          "mutability": "mutable",
                          "name": "balance0Adjusted",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6749,
                          "src": "16760:21:25",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 6702,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "16760:4:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6714,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "33",
                                "id": 6711,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16821:1:25",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_3_by_1",
                                  "typeString": "int_const 3"
                                },
                                "value": "3"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_3_by_1",
                                  "typeString": "int_const 3"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 6709,
                                "name": "amount0In",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6660,
                                "src": "16807:9:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6710,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7111,
                              "src": "16807:13:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 6712,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16807:16:25",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31303030",
                                "id": 6706,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16797:4:25",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1000_by_1",
                                  "typeString": "int_const 1000"
                                },
                                "value": "1000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1000_by_1",
                                  "typeString": "int_const 1000"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 6704,
                                "name": "balance0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6574,
                                "src": "16784:8:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6705,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7111,
                              "src": "16784:12:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 6707,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16784:18:25",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6708,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sub",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7083,
                          "src": "16784:22:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 6713,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16784:40:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "16760:64:25"
                    },
                    {
                      "assignments": [
                        6716
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6716,
                          "mutability": "mutable",
                          "name": "balance1Adjusted",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6749,
                          "src": "16832:21:25",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 6715,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "16832:4:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6727,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "33",
                                "id": 6724,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16893:1:25",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_3_by_1",
                                  "typeString": "int_const 3"
                                },
                                "value": "3"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_3_by_1",
                                  "typeString": "int_const 3"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 6722,
                                "name": "amount1In",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6676,
                                "src": "16879:9:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6723,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7111,
                              "src": "16879:13:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 6725,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16879:16:25",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31303030",
                                "id": 6719,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16869:4:25",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1000_by_1",
                                  "typeString": "int_const 1000"
                                },
                                "value": "1000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1000_by_1",
                                  "typeString": "int_const 1000"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 6717,
                                "name": "balance1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6577,
                                "src": "16856:8:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6718,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7111,
                              "src": "16856:12:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 6720,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16856:18:25",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6721,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sub",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7083,
                          "src": "16856:22:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 6726,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16856:40:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "16832:64:25"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6745,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6731,
                                  "name": "balance1Adjusted",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6716,
                                  "src": "16942:16:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6729,
                                  "name": "balance0Adjusted",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6703,
                                  "src": "16921:16:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 6730,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7111,
                                "src": "16921:20:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 6732,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16921:38:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_1000000_by_1",
                                    "typeString": "int_const 1000000"
                                  },
                                  "id": 6743,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31303030",
                                    "id": 6741,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "16998:4:25",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1000_by_1",
                                      "typeString": "int_const 1000"
                                    },
                                    "value": "1000"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "**",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 6742,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17004:1:25",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "16998:7:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1000000_by_1",
                                    "typeString": "int_const 1000000"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_1000000_by_1",
                                    "typeString": "int_const 1000000"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 6738,
                                      "name": "_reserve1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6558,
                                      "src": "16983:9:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 6735,
                                          "name": "_reserve0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6556,
                                          "src": "16968:9:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        ],
                                        "id": 6734,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "16963:4:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 6733,
                                          "name": "uint",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "16963:4:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 6736,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "16963:15:25",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6737,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7111,
                                    "src": "16963:19:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 6739,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "16963:30:25",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 6740,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7111,
                                "src": "16963:34:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 6744,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16963:43:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "16921:85:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "556e697377617056323a204b",
                            "id": 6746,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17016:14:25",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_50b159bbb975f5448705db79eafd212ba91c20fe5a110a13759239545d3339af",
                              "typeString": "literal_string \"UniswapV2: K\""
                            },
                            "value": "UniswapV2: K"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_50b159bbb975f5448705db79eafd212ba91c20fe5a110a13759239545d3339af",
                              "typeString": "literal_string \"UniswapV2: K\""
                            }
                          ],
                          "id": 6728,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "16904:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 6747,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16904:134:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6748,
                      "nodeType": "ExpressionStatement",
                      "src": "16904:134:25"
                    }
                  ]
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6751,
                        "name": "balance0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6574,
                        "src": "17059:8:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6752,
                        "name": "balance1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6577,
                        "src": "17069:8:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6753,
                        "name": "_reserve0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6556,
                        "src": "17079:9:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6754,
                        "name": "_reserve1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6558,
                        "src": "17090:9:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        },
                        {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      ],
                      "id": 6750,
                      "name": "_update",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6103,
                      "src": "17051:7:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint112_$_t_uint112_$returns$__$",
                        "typeString": "function (uint256,uint256,uint112,uint112)"
                      }
                    },
                    "id": 6755,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17051:49:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6756,
                  "nodeType": "ExpressionStatement",
                  "src": "17051:49:25"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 6758,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "17116:3:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 6759,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "17116:10:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6760,
                        "name": "amount0In",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6660,
                        "src": "17128:9:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6761,
                        "name": "amount1In",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6676,
                        "src": "17139:9:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6762,
                        "name": "amount0Out",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6533,
                        "src": "17150:10:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6763,
                        "name": "amount1Out",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6535,
                        "src": "17162:10:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6764,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6537,
                        "src": "17174:2:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 6757,
                      "name": "Swap",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5949,
                      "src": "17111:4:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (address,uint256,uint256,uint256,uint256,address)"
                      }
                    },
                    "id": 6765,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17111:66:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6766,
                  "nodeType": "EmitStatement",
                  "src": "17106:71:25"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "022c0d9f",
            "id": 6768,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 6542,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6541,
                  "name": "lock",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5852,
                  "src": "15406:4:25",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "15406:4:25"
              }
            ],
            "name": "swap",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6540,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6533,
                  "mutability": "mutable",
                  "name": "amount0Out",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6768,
                  "src": "15315:15:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6532,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "15315:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6535,
                  "mutability": "mutable",
                  "name": "amount1Out",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6768,
                  "src": "15336:15:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6534,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "15336:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6537,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6768,
                  "src": "15357:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6536,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15357:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6539,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6768,
                  "src": "15373:19:25",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6538,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "15373:5:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15309:87:25"
            },
            "returnParameters": {
              "id": 6543,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15411:0:25"
            },
            "scope": 6848,
            "src": "15296:1886:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 6817,
              "nodeType": "Block",
              "src": "17264:359:25",
              "statements": [
                {
                  "assignments": [
                    6776
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6776,
                      "mutability": "mutable",
                      "name": "_token0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6817,
                      "src": "17270:15:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6775,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "17270:7:25",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6778,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 6777,
                    "name": "token0",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5816,
                    "src": "17288:6:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17270:24:25"
                },
                {
                  "assignments": [
                    6780
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6780,
                      "mutability": "mutable",
                      "name": "_token1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6817,
                      "src": "17315:15:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6779,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "17315:7:25",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6782,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 6781,
                    "name": "token1",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5818,
                    "src": "17333:6:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17315:24:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6784,
                        "name": "_token0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6776,
                        "src": "17381:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6785,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6770,
                        "src": "17396:2:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6796,
                            "name": "reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5820,
                            "src": "17471:8:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 6792,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "17460:4:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_MockUniswapV2FactoryUniswapV2Pair_$6848",
                                      "typeString": "contract MockUniswapV2FactoryUniswapV2Pair"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_MockUniswapV2FactoryUniswapV2Pair_$6848",
                                      "typeString": "contract MockUniswapV2FactoryUniswapV2Pair"
                                    }
                                  ],
                                  "id": 6791,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "17452:7:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 6790,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "17452:7:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 6793,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17452:13:25",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 6787,
                                    "name": "_token0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6776,
                                    "src": "17433:7:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 6786,
                                  "name": "MockUniswapV2FactoryIERC20",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5390,
                                  "src": "17406:26:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_MockUniswapV2FactoryIERC20_$5390_$",
                                    "typeString": "type(contract MockUniswapV2FactoryIERC20)"
                                  }
                                },
                                "id": 6788,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17406:35:25",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MockUniswapV2FactoryIERC20_$5390",
                                  "typeString": "contract MockUniswapV2FactoryIERC20"
                                }
                              },
                              "id": 6789,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5351,
                              "src": "17406:45:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 6794,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17406:60:25",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6795,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sub",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7083,
                          "src": "17406:64:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 6797,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17406:74:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 6783,
                      "name": "_safeTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5917,
                      "src": "17360:13:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 6798,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17360:126:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6799,
                  "nodeType": "ExpressionStatement",
                  "src": "17360:126:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6801,
                        "name": "_token1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6780,
                        "src": "17513:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6802,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6770,
                        "src": "17528:2:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6813,
                            "name": "reserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5822,
                            "src": "17603:8:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 6809,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "17592:4:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_MockUniswapV2FactoryUniswapV2Pair_$6848",
                                      "typeString": "contract MockUniswapV2FactoryUniswapV2Pair"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_MockUniswapV2FactoryUniswapV2Pair_$6848",
                                      "typeString": "contract MockUniswapV2FactoryUniswapV2Pair"
                                    }
                                  ],
                                  "id": 6808,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "17584:7:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 6807,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "17584:7:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 6810,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17584:13:25",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 6804,
                                    "name": "_token1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6780,
                                    "src": "17565:7:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 6803,
                                  "name": "MockUniswapV2FactoryIERC20",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5390,
                                  "src": "17538:26:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_MockUniswapV2FactoryIERC20_$5390_$",
                                    "typeString": "type(contract MockUniswapV2FactoryIERC20)"
                                  }
                                },
                                "id": 6805,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17538:35:25",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MockUniswapV2FactoryIERC20_$5390",
                                  "typeString": "contract MockUniswapV2FactoryIERC20"
                                }
                              },
                              "id": 6806,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5351,
                              "src": "17538:45:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 6811,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17538:60:25",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6812,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sub",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7083,
                          "src": "17538:64:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 6814,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17538:74:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 6800,
                      "name": "_safeTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5917,
                      "src": "17492:13:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 6815,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17492:126:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6816,
                  "nodeType": "ExpressionStatement",
                  "src": "17492:126:25"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "bc25cf77",
            "id": 6818,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 6773,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6772,
                  "name": "lock",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5852,
                  "src": "17259:4:25",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "17259:4:25"
              }
            ],
            "name": "skim",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6771,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6770,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6818,
                  "src": "17238:10:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6769,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "17238:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "17237:12:25"
            },
            "returnParameters": {
              "id": 6774,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17264:0:25"
            },
            "scope": 6848,
            "src": "17224:399:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 6846,
              "nodeType": "Block",
              "src": "17695:190:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 6830,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "17769:4:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MockUniswapV2FactoryUniswapV2Pair_$6848",
                                  "typeString": "contract MockUniswapV2FactoryUniswapV2Pair"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MockUniswapV2FactoryUniswapV2Pair_$6848",
                                  "typeString": "contract MockUniswapV2FactoryUniswapV2Pair"
                                }
                              ],
                              "id": 6829,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "17761:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 6828,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "17761:7:25",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 6831,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17761:13:25",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 6825,
                                "name": "token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5816,
                                "src": "17743:6:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 6824,
                              "name": "MockUniswapV2FactoryIERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5390,
                              "src": "17716:26:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MockUniswapV2FactoryIERC20_$5390_$",
                                "typeString": "type(contract MockUniswapV2FactoryIERC20)"
                              }
                            },
                            "id": 6826,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17716:34:25",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MockUniswapV2FactoryIERC20_$5390",
                              "typeString": "contract MockUniswapV2FactoryIERC20"
                            }
                          },
                          "id": 6827,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5351,
                          "src": "17716:44:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 6832,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17716:59:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 6839,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "17836:4:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MockUniswapV2FactoryUniswapV2Pair_$6848",
                                  "typeString": "contract MockUniswapV2FactoryUniswapV2Pair"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MockUniswapV2FactoryUniswapV2Pair_$6848",
                                  "typeString": "contract MockUniswapV2FactoryUniswapV2Pair"
                                }
                              ],
                              "id": 6838,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "17828:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 6837,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "17828:7:25",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 6840,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17828:13:25",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 6834,
                                "name": "token1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5818,
                                "src": "17810:6:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 6833,
                              "name": "MockUniswapV2FactoryIERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5390,
                              "src": "17783:26:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MockUniswapV2FactoryIERC20_$5390_$",
                                "typeString": "type(contract MockUniswapV2FactoryIERC20)"
                              }
                            },
                            "id": 6835,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17783:34:25",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MockUniswapV2FactoryIERC20_$5390",
                              "typeString": "contract MockUniswapV2FactoryIERC20"
                            }
                          },
                          "id": 6836,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5351,
                          "src": "17783:44:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 6841,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17783:59:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6842,
                        "name": "reserve0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5820,
                        "src": "17850:8:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6843,
                        "name": "reserve1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5822,
                        "src": "17866:8:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        },
                        {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      ],
                      "id": 6823,
                      "name": "_update",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6103,
                      "src": "17701:7:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint112_$_t_uint112_$returns$__$",
                        "typeString": "function (uint256,uint256,uint112,uint112)"
                      }
                    },
                    "id": 6844,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17701:179:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6845,
                  "nodeType": "ExpressionStatement",
                  "src": "17701:179:25"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "fff6cae9",
            "id": 6847,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 6821,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6820,
                  "name": "lock",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5852,
                  "src": "17690:4:25",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "17690:4:25"
              }
            ],
            "name": "sync",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6819,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17678:2:25"
            },
            "returnParameters": {
              "id": 6822,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17695:0:25"
            },
            "scope": 6848,
            "src": "17665:220:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 7229,
        "src": "8450:9437:25"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [
          6848
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 7039,
        "linearizedBaseContracts": [
          7039
        ],
        "name": "MockUniswapV2Factory",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "functionSelector": "017e7e58",
            "id": 6850,
            "mutability": "mutable",
            "name": "feeTo",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 7039,
            "src": "17923:20:25",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 6849,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "17923:7:25",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "094b7415",
            "id": 6852,
            "mutability": "mutable",
            "name": "feeToSetter",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 7039,
            "src": "17947:26:25",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 6851,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "17947:7:25",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "e6a43905",
            "id": 6858,
            "mutability": "mutable",
            "name": "getPair",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 7039,
            "src": "17978:62:25",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
              "typeString": "mapping(address => mapping(address => address))"
            },
            "typeName": {
              "id": 6857,
              "keyType": {
                "id": 6853,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "17986:7:25",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "17978:47:25",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
                "typeString": "mapping(address => mapping(address => address))"
              },
              "valueType": {
                "id": 6856,
                "keyType": {
                  "id": 6854,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "18005:7:25",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "nodeType": "Mapping",
                "src": "17997:27:25",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                  "typeString": "mapping(address => address)"
                },
                "valueType": {
                  "id": 6855,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "18016:7:25",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "1e3dd18b",
            "id": 6861,
            "mutability": "mutable",
            "name": "allPairs",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 7039,
            "src": "18044:25:25",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_address_$dyn_storage",
              "typeString": "address[]"
            },
            "typeName": {
              "baseType": {
                "id": 6859,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "18044:7:25",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "id": 6860,
              "length": null,
              "nodeType": "ArrayTypeName",
              "src": "18044:9:25",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                "typeString": "address[]"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 6871,
            "name": "PairCreated",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6870,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6863,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "token0",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6871,
                  "src": "18092:22:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6862,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18092:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6865,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "token1",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6871,
                  "src": "18116:22:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6864,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18116:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6867,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "pair",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6871,
                  "src": "18140:12:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6866,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18140:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6869,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6871,
                  "src": "18154:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6868,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "18154:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18091:68:25"
            },
            "src": "18074:86:25"
          },
          {
            "body": {
              "id": 6880,
              "nodeType": "Block",
              "src": "18205:37:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6878,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 6876,
                      "name": "feeToSetter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6852,
                      "src": "18211:11:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 6877,
                      "name": "_feeToSetter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6873,
                      "src": "18225:12:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "18211:26:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 6879,
                  "nodeType": "ExpressionStatement",
                  "src": "18211:26:25"
                }
              ]
            },
            "documentation": null,
            "id": 6881,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6874,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6873,
                  "mutability": "mutable",
                  "name": "_feeToSetter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6881,
                  "src": "18176:20:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6872,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18176:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18175:22:25"
            },
            "returnParameters": {
              "id": 6875,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18205:0:25"
            },
            "scope": 7039,
            "src": "18164:78:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6889,
              "nodeType": "Block",
              "src": "18301:33:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 6886,
                      "name": "allPairs",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6861,
                      "src": "18314:8:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                        "typeString": "address[] storage ref"
                      }
                    },
                    "id": 6887,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "18314:15:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 6885,
                  "id": 6888,
                  "nodeType": "Return",
                  "src": "18307:22:25"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "574f2ba3",
            "id": 6890,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "allPairsLength",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6882,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18269:2:25"
            },
            "returnParameters": {
              "id": 6885,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6884,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6890,
                  "src": "18295:4:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6883,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "18295:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18294:6:25"
            },
            "scope": 7039,
            "src": "18246:88:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 7001,
              "nodeType": "Block",
              "src": "18422:844:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 6902,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 6900,
                          "name": "tokenA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6892,
                          "src": "18436:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 6901,
                          "name": "tokenB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6894,
                          "src": "18446:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "18436:16:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "556e697377617056323a204944454e544943414c5f414444524553534553",
                        "id": 6903,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18454:32:25",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1af2ec9097b2f8bc2dcfea53a9ab4b2cdab42fa29e9a9e04dcb14b4efcc8aa70",
                          "typeString": "literal_string \"UniswapV2: IDENTICAL_ADDRESSES\""
                        },
                        "value": "UniswapV2: IDENTICAL_ADDRESSES"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1af2ec9097b2f8bc2dcfea53a9ab4b2cdab42fa29e9a9e04dcb14b4efcc8aa70",
                          "typeString": "literal_string \"UniswapV2: IDENTICAL_ADDRESSES\""
                        }
                      ],
                      "id": 6899,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "18428:7:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6904,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18428:59:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6905,
                  "nodeType": "ExpressionStatement",
                  "src": "18428:59:25"
                },
                {
                  "assignments": [
                    6907,
                    6909
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6907,
                      "mutability": "mutable",
                      "name": "token0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7001,
                      "src": "18494:14:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6906,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "18494:7:25",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6909,
                      "mutability": "mutable",
                      "name": "token1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7001,
                      "src": "18510:14:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6908,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "18510:7:25",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6920,
                  "initialValue": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 6912,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 6910,
                        "name": "tokenA",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6892,
                        "src": "18528:6:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 6911,
                        "name": "tokenB",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6894,
                        "src": "18537:6:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "18528:15:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 6916,
                          "name": "tokenB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6894,
                          "src": "18566:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 6917,
                          "name": "tokenA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6892,
                          "src": "18574:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 6918,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "18565:16:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                        "typeString": "tuple(address,address)"
                      }
                    },
                    "id": 6919,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "18528:53:25",
                    "trueExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 6913,
                          "name": "tokenA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6892,
                          "src": "18547:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 6914,
                          "name": "tokenB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6894,
                          "src": "18555:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 6915,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "18546:16:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                        "typeString": "tuple(address,address)"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                      "typeString": "tuple(address,address)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18493:88:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 6927,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 6922,
                          "name": "token0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6907,
                          "src": "18595:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 6925,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18613:1:25",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 6924,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "18605:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 6923,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "18605:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 6926,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18605:10:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "18595:20:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "556e697377617056323a205a45524f5f41444452455353",
                        "id": 6928,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18617:25:25",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9fd3496d51391106f97d9c12d75d9ef2543a217eeaf4b9c52c6fdbe23f45a5ae",
                          "typeString": "literal_string \"UniswapV2: ZERO_ADDRESS\""
                        },
                        "value": "UniswapV2: ZERO_ADDRESS"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9fd3496d51391106f97d9c12d75d9ef2543a217eeaf4b9c52c6fdbe23f45a5ae",
                          "typeString": "literal_string \"UniswapV2: ZERO_ADDRESS\""
                        }
                      ],
                      "id": 6921,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "18587:7:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6929,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18587:56:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6930,
                  "nodeType": "ExpressionStatement",
                  "src": "18587:56:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 6941,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 6932,
                              "name": "getPair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6858,
                              "src": "18657:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
                                "typeString": "mapping(address => mapping(address => address))"
                              }
                            },
                            "id": 6934,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 6933,
                              "name": "token0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6907,
                              "src": "18665:6:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "18657:15:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                              "typeString": "mapping(address => address)"
                            }
                          },
                          "id": 6936,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 6935,
                            "name": "token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6909,
                            "src": "18673:6:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "18657:23:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 6939,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18692:1:25",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 6938,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "18684:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 6937,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "18684:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 6940,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18684:10:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "18657:37:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "556e697377617056323a20504149525f455849535453",
                        "id": 6942,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18696:24:25",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7597a3317d1f47998beb266ffa8b5f1f9be064321f01552ef08c1fe9eeb777db",
                          "typeString": "literal_string \"UniswapV2: PAIR_EXISTS\""
                        },
                        "value": "UniswapV2: PAIR_EXISTS"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7597a3317d1f47998beb266ffa8b5f1f9be064321f01552ef08c1fe9eeb777db",
                          "typeString": "literal_string \"UniswapV2: PAIR_EXISTS\""
                        }
                      ],
                      "id": 6931,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "18649:7:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6943,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18649:72:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6944,
                  "nodeType": "ExpressionStatement",
                  "src": "18649:72:25"
                },
                {
                  "assignments": [
                    6946
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6946,
                      "mutability": "mutable",
                      "name": "bytecode",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7001,
                      "src": "18757:21:25",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 6945,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "18757:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6951,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 6948,
                          "name": "MockUniswapV2FactoryUniswapV2Pair",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6848,
                          "src": "18786:33:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_MockUniswapV2FactoryUniswapV2Pair_$6848_$",
                            "typeString": "type(contract MockUniswapV2FactoryUniswapV2Pair)"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_type$_t_contract$_MockUniswapV2FactoryUniswapV2Pair_$6848_$",
                            "typeString": "type(contract MockUniswapV2FactoryUniswapV2Pair)"
                          }
                        ],
                        "id": 6947,
                        "name": "type",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -27,
                        "src": "18781:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 6949,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "18781:39:25",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_meta_type_t_contract$_MockUniswapV2FactoryUniswapV2Pair_$6848",
                        "typeString": "type(contract MockUniswapV2FactoryUniswapV2Pair)"
                      }
                    },
                    "id": 6950,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberName": "creationCode",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "18781:52:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18757:76:25"
                },
                {
                  "assignments": [
                    6953
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6953,
                      "mutability": "mutable",
                      "name": "salt",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7001,
                      "src": "18839:12:25",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 6952,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "18839:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6961,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6957,
                            "name": "token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6907,
                            "src": "18881:6:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 6958,
                            "name": "token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6909,
                            "src": "18889:6:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 6955,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "18864:3:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 6956,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "18864:16:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 6959,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18864:32:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 6954,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "18854:9:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 6960,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18854:43:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18839:58:25"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "18912:74:25",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "18920:60:25",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "18936:1:25",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "bytecode",
                                  "nodeType": "YulIdentifier",
                                  "src": "18943:8:25"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "18953:2:25",
                                  "type": "",
                                  "value": "32"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "18939:3:25"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "18939:17:25"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "bytecode",
                                  "nodeType": "YulIdentifier",
                                  "src": "18964:8:25"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "18958:5:25"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "18958:15:25"
                            },
                            {
                              "name": "salt",
                              "nodeType": "YulIdentifier",
                              "src": "18975:4:25"
                            }
                          ],
                          "functionName": {
                            "name": "create2",
                            "nodeType": "YulIdentifier",
                            "src": "18928:7:25"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "18928:52:25"
                        },
                        "variableNames": [
                          {
                            "name": "pair",
                            "nodeType": "YulIdentifier",
                            "src": "18920:4:25"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 6946,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "18943:8:25",
                      "valueSize": 1
                    },
                    {
                      "declaration": 6946,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "18964:8:25",
                      "valueSize": 1
                    },
                    {
                      "declaration": 6897,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "18920:4:25",
                      "valueSize": 1
                    },
                    {
                      "declaration": 6953,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "18975:4:25",
                      "valueSize": 1
                    }
                  ],
                  "id": 6962,
                  "nodeType": "InlineAssembly",
                  "src": "18903:83:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6967,
                        "name": "token0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6907,
                        "src": "19043:6:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6968,
                        "name": "token1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6909,
                        "src": "19051:6:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6964,
                            "name": "pair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6897,
                            "src": "19026:4:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 6963,
                          "name": "MockUniswapV2FactoryIUniswapV2Pair",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5192,
                          "src": "18991:34:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_MockUniswapV2FactoryIUniswapV2Pair_$5192_$",
                            "typeString": "type(contract MockUniswapV2FactoryIUniswapV2Pair)"
                          }
                        },
                        "id": 6965,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18991:40:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MockUniswapV2FactoryIUniswapV2Pair_$5192",
                          "typeString": "contract MockUniswapV2FactoryIUniswapV2Pair"
                        }
                      },
                      "id": 6966,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5191,
                      "src": "18991:51:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (address,address) external"
                      }
                    },
                    "id": 6969,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18991:67:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6970,
                  "nodeType": "ExpressionStatement",
                  "src": "18991:67:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6977,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 6971,
                          "name": "getPair",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6858,
                          "src": "19064:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
                            "typeString": "mapping(address => mapping(address => address))"
                          }
                        },
                        "id": 6974,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 6972,
                          "name": "token0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6907,
                          "src": "19072:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "19064:15:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                          "typeString": "mapping(address => address)"
                        }
                      },
                      "id": 6975,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 6973,
                        "name": "token1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6909,
                        "src": "19080:6:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19064:23:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 6976,
                      "name": "pair",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6897,
                      "src": "19090:4:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "19064:30:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 6978,
                  "nodeType": "ExpressionStatement",
                  "src": "19064:30:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6985,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 6979,
                          "name": "getPair",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6858,
                          "src": "19100:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
                            "typeString": "mapping(address => mapping(address => address))"
                          }
                        },
                        "id": 6982,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 6980,
                          "name": "token1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6909,
                          "src": "19108:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "19100:15:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                          "typeString": "mapping(address => address)"
                        }
                      },
                      "id": 6983,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 6981,
                        "name": "token0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6907,
                        "src": "19116:6:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19100:23:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 6984,
                      "name": "pair",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6897,
                      "src": "19126:4:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "19100:30:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 6986,
                  "nodeType": "ExpressionStatement",
                  "src": "19100:30:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6990,
                        "name": "pair",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6897,
                        "src": "19195:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 6987,
                        "name": "allPairs",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6861,
                        "src": "19181:8:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 6989,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19181:13:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 6991,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19181:19:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6992,
                  "nodeType": "ExpressionStatement",
                  "src": "19181:19:25"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6994,
                        "name": "token0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6907,
                        "src": "19223:6:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6995,
                        "name": "token1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6909,
                        "src": "19231:6:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6996,
                        "name": "pair",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6897,
                        "src": "19239:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 6997,
                          "name": "allPairs",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6861,
                          "src": "19245:8:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                            "typeString": "address[] storage ref"
                          }
                        },
                        "id": 6998,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "19245:15:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 6993,
                      "name": "PairCreated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6871,
                      "src": "19211:11:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,address,uint256)"
                      }
                    },
                    "id": 6999,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19211:50:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7000,
                  "nodeType": "EmitStatement",
                  "src": "19206:55:25"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "c9c65396",
            "id": 7002,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "createPair",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6895,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6892,
                  "mutability": "mutable",
                  "name": "tokenA",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7002,
                  "src": "18358:14:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6891,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18358:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6894,
                  "mutability": "mutable",
                  "name": "tokenB",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7002,
                  "src": "18374:14:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6893,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18374:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18357:32:25"
            },
            "returnParameters": {
              "id": 6898,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6897,
                  "mutability": "mutable",
                  "name": "pair",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7002,
                  "src": "18408:12:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6896,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18408:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18407:14:25"
            },
            "scope": 7039,
            "src": "18338:928:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 7019,
              "nodeType": "Block",
              "src": "19313:89:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 7011,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7008,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "19327:3:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 7009,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "19327:10:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 7010,
                          "name": "feeToSetter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6852,
                          "src": "19341:11:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "19327:25:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "556e697377617056323a20464f5242494444454e",
                        "id": 7012,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19354:22:25",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6e6d2caae3ed190a2586f9b576de92bc80eab72002acec2261bbed89d68a3b37",
                          "typeString": "literal_string \"UniswapV2: FORBIDDEN\""
                        },
                        "value": "UniswapV2: FORBIDDEN"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6e6d2caae3ed190a2586f9b576de92bc80eab72002acec2261bbed89d68a3b37",
                          "typeString": "literal_string \"UniswapV2: FORBIDDEN\""
                        }
                      ],
                      "id": 7007,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "19319:7:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7013,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19319:58:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7014,
                  "nodeType": "ExpressionStatement",
                  "src": "19319:58:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7017,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 7015,
                      "name": "feeTo",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6850,
                      "src": "19383:5:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 7016,
                      "name": "_feeTo",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7004,
                      "src": "19391:6:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "19383:14:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 7018,
                  "nodeType": "ExpressionStatement",
                  "src": "19383:14:25"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "f46901ed",
            "id": 7020,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setFeeTo",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 7005,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7004,
                  "mutability": "mutable",
                  "name": "_feeTo",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7020,
                  "src": "19288:14:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7003,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "19288:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19287:16:25"
            },
            "returnParameters": {
              "id": 7006,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19313:0:25"
            },
            "scope": 7039,
            "src": "19270:132:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 7037,
              "nodeType": "Block",
              "src": "19461:101:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 7029,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7026,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "19475:3:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 7027,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "19475:10:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 7028,
                          "name": "feeToSetter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6852,
                          "src": "19489:11:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "19475:25:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "556e697377617056323a20464f5242494444454e",
                        "id": 7030,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19502:22:25",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6e6d2caae3ed190a2586f9b576de92bc80eab72002acec2261bbed89d68a3b37",
                          "typeString": "literal_string \"UniswapV2: FORBIDDEN\""
                        },
                        "value": "UniswapV2: FORBIDDEN"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6e6d2caae3ed190a2586f9b576de92bc80eab72002acec2261bbed89d68a3b37",
                          "typeString": "literal_string \"UniswapV2: FORBIDDEN\""
                        }
                      ],
                      "id": 7025,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "19467:7:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7031,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19467:58:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7032,
                  "nodeType": "ExpressionStatement",
                  "src": "19467:58:25"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7035,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 7033,
                      "name": "feeToSetter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6852,
                      "src": "19531:11:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 7034,
                      "name": "_feeToSetter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7022,
                      "src": "19545:12:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "19531:26:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 7036,
                  "nodeType": "ExpressionStatement",
                  "src": "19531:26:25"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "a2e74af6",
            "id": 7038,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setFeeToSetter",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 7023,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7022,
                  "mutability": "mutable",
                  "name": "_feeToSetter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7038,
                  "src": "19430:20:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7021,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "19430:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19429:22:25"
            },
            "returnParameters": {
              "id": 7024,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19461:0:25"
            },
            "scope": 7039,
            "src": "19406:156:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 7229,
        "src": "17889:1675:25"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": null,
        "fullyImplemented": true,
        "id": 7112,
        "linearizedBaseContracts": [
          7112
        ],
        "name": "MockUniswapV2FactorySafeMath",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 7060,
              "nodeType": "Block",
              "src": "19773:60:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 7056,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 7053,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 7049,
                                "name": "z",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7046,
                                "src": "19788:1:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7052,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 7050,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7041,
                                  "src": "19792:1:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 7051,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7043,
                                  "src": "19796:1:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "19792:5:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "19788:9:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 7054,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "19787:11:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 7055,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7041,
                          "src": "19802:1:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "19787:16:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "64732d6d6174682d6164642d6f766572666c6f77",
                        "id": 7057,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19805:22:25",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_3903056b84ed2aba2be78662dc6c5c99b160cebe9af9bd9493d0fc28ff16f6db",
                          "typeString": "literal_string \"ds-math-add-overflow\""
                        },
                        "value": "ds-math-add-overflow"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_3903056b84ed2aba2be78662dc6c5c99b160cebe9af9bd9493d0fc28ff16f6db",
                          "typeString": "literal_string \"ds-math-add-overflow\""
                        }
                      ],
                      "id": 7048,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "19779:7:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7058,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19779:49:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7059,
                  "nodeType": "ExpressionStatement",
                  "src": "19779:49:25"
                }
              ]
            },
            "documentation": null,
            "id": 7061,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "add",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 7044,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7041,
                  "mutability": "mutable",
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7061,
                  "src": "19726:6:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7040,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "19726:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7043,
                  "mutability": "mutable",
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7061,
                  "src": "19734:6:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7042,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "19734:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19725:16:25"
            },
            "returnParameters": {
              "id": 7047,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7046,
                  "mutability": "mutable",
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7061,
                  "src": "19765:6:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7045,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "19765:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19764:8:25"
            },
            "scope": 7112,
            "src": "19713:120:25",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 7082,
              "nodeType": "Block",
              "src": "19897:61:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 7078,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 7075,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 7071,
                                "name": "z",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7068,
                                "src": "19912:1:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7074,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 7072,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7063,
                                  "src": "19916:1:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 7073,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7065,
                                  "src": "19920:1:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "19916:5:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "19912:9:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 7076,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "19911:11:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 7077,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7063,
                          "src": "19926:1:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "19911:16:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "64732d6d6174682d7375622d756e646572666c6f77",
                        "id": 7079,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19929:23:25",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_03b20b9f6e6e7905f077509fd420fb44afc685f254bcefe49147296e1ba25590",
                          "typeString": "literal_string \"ds-math-sub-underflow\""
                        },
                        "value": "ds-math-sub-underflow"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_03b20b9f6e6e7905f077509fd420fb44afc685f254bcefe49147296e1ba25590",
                          "typeString": "literal_string \"ds-math-sub-underflow\""
                        }
                      ],
                      "id": 7070,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "19903:7:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7080,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19903:50:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7081,
                  "nodeType": "ExpressionStatement",
                  "src": "19903:50:25"
                }
              ]
            },
            "documentation": null,
            "id": 7083,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "sub",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 7066,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7063,
                  "mutability": "mutable",
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7083,
                  "src": "19850:6:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7062,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "19850:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7065,
                  "mutability": "mutable",
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7083,
                  "src": "19858:6:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7064,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "19858:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19849:16:25"
            },
            "returnParameters": {
              "id": 7069,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7068,
                  "mutability": "mutable",
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7083,
                  "src": "19889:6:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7067,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "19889:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19888:8:25"
            },
            "scope": 7112,
            "src": "19837:121:25",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 7110,
              "nodeType": "Block",
              "src": "20022:74:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 7106,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7095,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7093,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7087,
                            "src": "20036:1:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 7094,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20041:1:25",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "20036:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7105,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7103,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "id": 7100,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 7096,
                                    "name": "z",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7090,
                                    "src": "20047:1:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 7099,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 7097,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7085,
                                      "src": "20051:1:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 7098,
                                      "name": "y",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7087,
                                      "src": "20055:1:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "20051:5:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "20047:9:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 7101,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "20046:11:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 7102,
                              "name": "y",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7087,
                              "src": "20060:1:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "20046:15:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 7104,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7085,
                            "src": "20065:1:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20046:20:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "20036:30:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "64732d6d6174682d6d756c2d6f766572666c6f77",
                        "id": 7107,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20068:22:25",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_25a0ef6406c6af6852555433653ce478274cd9f03a5dec44d001868a76b3bfdd",
                          "typeString": "literal_string \"ds-math-mul-overflow\""
                        },
                        "value": "ds-math-mul-overflow"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_25a0ef6406c6af6852555433653ce478274cd9f03a5dec44d001868a76b3bfdd",
                          "typeString": "literal_string \"ds-math-mul-overflow\""
                        }
                      ],
                      "id": 7092,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "20028:7:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7108,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20028:63:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7109,
                  "nodeType": "ExpressionStatement",
                  "src": "20028:63:25"
                }
              ]
            },
            "documentation": null,
            "id": 7111,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "mul",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 7088,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7085,
                  "mutability": "mutable",
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7111,
                  "src": "19975:6:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7084,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "19975:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7087,
                  "mutability": "mutable",
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7111,
                  "src": "19983:6:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7086,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "19983:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19974:16:25"
            },
            "returnParameters": {
              "id": 7091,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7090,
                  "mutability": "mutable",
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7111,
                  "src": "20014:6:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7089,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "20014:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20013:8:25"
            },
            "scope": 7112,
            "src": "19962:134:25",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 7229,
        "src": "19672:426:25"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": null,
        "fullyImplemented": true,
        "id": 7186,
        "linearizedBaseContracts": [
          7186
        ],
        "name": "MockUniswapV2FactoryMah",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 7130,
              "nodeType": "Block",
              "src": "20249:28:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7128,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 7121,
                      "name": "z",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7119,
                      "src": "20255:1:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 7124,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 7122,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7114,
                          "src": "20259:1:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 7123,
                          "name": "y",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7116,
                          "src": "20263:1:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "20259:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseExpression": {
                        "argumentTypes": null,
                        "id": 7126,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7116,
                        "src": "20271:1:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7127,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "Conditional",
                      "src": "20259:13:25",
                      "trueExpression": {
                        "argumentTypes": null,
                        "id": 7125,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7114,
                        "src": "20267:1:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "20255:17:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 7129,
                  "nodeType": "ExpressionStatement",
                  "src": "20255:17:25"
                }
              ]
            },
            "documentation": null,
            "id": 7131,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "min",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 7117,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7114,
                  "mutability": "mutable",
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7131,
                  "src": "20202:6:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7113,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "20202:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7116,
                  "mutability": "mutable",
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7131,
                  "src": "20210:6:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7115,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "20210:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20201:16:25"
            },
            "returnParameters": {
              "id": 7120,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7119,
                  "mutability": "mutable",
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7131,
                  "src": "20241:6:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7118,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "20241:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20240:8:25"
            },
            "scope": 7186,
            "src": "20189:88:25",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 7184,
              "nodeType": "Block",
              "src": "20441:179:25",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7140,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 7138,
                      "name": "y",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7133,
                      "src": "20451:1:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 7139,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "20455:1:25",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_3_by_1",
                        "typeString": "int_const 3"
                      },
                      "value": "3"
                    },
                    "src": "20451:5:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 7176,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 7174,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7133,
                        "src": "20588:1:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 7175,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20593:1:25",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "20588:6:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": null,
                    "id": 7182,
                    "nodeType": "IfStatement",
                    "src": "20584:32:25",
                    "trueBody": {
                      "id": 7181,
                      "nodeType": "Block",
                      "src": "20596:20:25",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 7179,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 7177,
                              "name": "z",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7136,
                              "src": "20604:1:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 7178,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20608:1:25",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "20604:5:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7180,
                          "nodeType": "ExpressionStatement",
                          "src": "20604:5:25"
                        }
                      ]
                    }
                  },
                  "id": 7183,
                  "nodeType": "IfStatement",
                  "src": "20447:169:25",
                  "trueBody": {
                    "id": 7173,
                    "nodeType": "Block",
                    "src": "20458:120:25",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7143,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7141,
                            "name": "z",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7136,
                            "src": "20466:1:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 7142,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7133,
                            "src": "20470:1:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20466:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7144,
                        "nodeType": "ExpressionStatement",
                        "src": "20466:5:25"
                      },
                      {
                        "assignments": [
                          7146
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7146,
                            "mutability": "mutable",
                            "name": "x",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 7173,
                            "src": "20479:6:25",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7145,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "20479:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7152,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7151,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7149,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 7147,
                              "name": "y",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7133,
                              "src": "20488:1:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 7148,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20492:1:25",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "20488:5:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 7150,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20496:1:25",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "20488:9:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20479:18:25"
                      },
                      {
                        "body": {
                          "id": 7171,
                          "nodeType": "Block",
                          "src": "20519:53:25",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 7158,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 7156,
                                  "name": "z",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7136,
                                  "src": "20529:1:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 7157,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7146,
                                  "src": "20533:1:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "20529:5:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7159,
                              "nodeType": "ExpressionStatement",
                              "src": "20529:5:25"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 7169,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 7160,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7146,
                                  "src": "20544:1:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7168,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7165,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 7163,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 7161,
                                            "name": "y",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7133,
                                            "src": "20549:1:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "/",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 7162,
                                            "name": "x",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7146,
                                            "src": "20553:1:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "20549:5:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 7164,
                                          "name": "x",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7146,
                                          "src": "20557:1:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "20549:9:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 7166,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "20548:11:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 7167,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "20562:1:25",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "20548:15:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "20544:19:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7170,
                              "nodeType": "ExpressionStatement",
                              "src": "20544:19:25"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7155,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7153,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7146,
                            "src": "20512:1:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 7154,
                            "name": "z",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7136,
                            "src": "20516:1:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20512:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7172,
                        "nodeType": "WhileStatement",
                        "src": "20505:67:25"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 7185,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "sqrt",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 7134,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7133,
                  "mutability": "mutable",
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7185,
                  "src": "20402:6:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7132,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "20402:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20401:8:25"
            },
            "returnParameters": {
              "id": 7137,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7136,
                  "mutability": "mutable",
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7185,
                  "src": "20433:6:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7135,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "20433:4:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20432:8:25"
            },
            "scope": 7186,
            "src": "20388:232:25",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 7229,
        "src": "20153:469:25"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": null,
        "fullyImplemented": true,
        "id": 7228,
        "linearizedBaseContracts": [
          7228
        ],
        "name": "UQ112x112",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 7191,
            "mutability": "constant",
            "name": "Q112",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 7228,
            "src": "20803:30:25",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint224",
              "typeString": "uint224"
            },
            "typeName": {
              "id": 7187,
              "name": "uint224",
              "nodeType": "ElementaryTypeName",
              "src": "20803:7:25",
              "typeDescriptions": {
                "typeIdentifier": "t_uint224",
                "typeString": "uint224"
              }
            },
            "value": {
              "argumentTypes": null,
              "commonType": {
                "typeIdentifier": "t_rational_5192296858534827628530496329220096_by_1",
                "typeString": "int_const 5192...(26 digits omitted)...0096"
              },
              "id": 7190,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "lValueRequested": false,
              "leftExpression": {
                "argumentTypes": null,
                "hexValue": "32",
                "id": 7188,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "20827:1:25",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_2_by_1",
                  "typeString": "int_const 2"
                },
                "value": "2"
              },
              "nodeType": "BinaryOperation",
              "operator": "**",
              "rightExpression": {
                "argumentTypes": null,
                "hexValue": "313132",
                "id": 7189,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "20830:3:25",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_112_by_1",
                  "typeString": "int_const 112"
                },
                "value": "112"
              },
              "src": "20827:6:25",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_5192296858534827628530496329220096_by_1",
                "typeString": "int_const 5192...(26 digits omitted)...0096"
              }
            },
            "visibility": "internal"
          },
          {
            "body": {
              "id": 7207,
              "nodeType": "Block",
              "src": "20936:51:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7205,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 7198,
                      "name": "z",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7196,
                      "src": "20942:1:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint224",
                        "typeString": "uint224"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint224",
                        "typeString": "uint224"
                      },
                      "id": 7204,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7201,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7193,
                            "src": "20954:1:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          ],
                          "id": 7200,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "20946:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint224_$",
                            "typeString": "type(uint224)"
                          },
                          "typeName": {
                            "id": 7199,
                            "name": "uint224",
                            "nodeType": "ElementaryTypeName",
                            "src": "20946:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 7202,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20946:10:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "*",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 7203,
                        "name": "Q112",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7191,
                        "src": "20959:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        }
                      },
                      "src": "20946:17:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint224",
                        "typeString": "uint224"
                      }
                    },
                    "src": "20942:21:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint224",
                      "typeString": "uint224"
                    }
                  },
                  "id": 7206,
                  "nodeType": "ExpressionStatement",
                  "src": "20942:21:25"
                }
              ]
            },
            "documentation": null,
            "id": 7208,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "encode",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 7194,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7193,
                  "mutability": "mutable",
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7208,
                  "src": "20891:9:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint112",
                    "typeString": "uint112"
                  },
                  "typeName": {
                    "id": 7192,
                    "name": "uint112",
                    "nodeType": "ElementaryTypeName",
                    "src": "20891:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint112",
                      "typeString": "uint112"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20890:11:25"
            },
            "returnParameters": {
              "id": 7197,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7196,
                  "mutability": "mutable",
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7208,
                  "src": "20925:9:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint224",
                    "typeString": "uint224"
                  },
                  "typeName": {
                    "id": 7195,
                    "name": "uint224",
                    "nodeType": "ElementaryTypeName",
                    "src": "20925:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint224",
                      "typeString": "uint224"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20924:11:25"
            },
            "scope": 7228,
            "src": "20875:112:25",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 7226,
              "nodeType": "Block",
              "src": "21122:29:25",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7224,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 7217,
                      "name": "z",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7215,
                      "src": "21128:1:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint224",
                        "typeString": "uint224"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint224",
                        "typeString": "uint224"
                      },
                      "id": 7223,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 7218,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7210,
                        "src": "21132:1:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "/",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7221,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7212,
                            "src": "21144:1:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          ],
                          "id": 7220,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "21136:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint224_$",
                            "typeString": "type(uint224)"
                          },
                          "typeName": {
                            "id": 7219,
                            "name": "uint224",
                            "nodeType": "ElementaryTypeName",
                            "src": "21136:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 7222,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "21136:10:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        }
                      },
                      "src": "21132:14:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint224",
                        "typeString": "uint224"
                      }
                    },
                    "src": "21128:18:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint224",
                      "typeString": "uint224"
                    }
                  },
                  "id": 7225,
                  "nodeType": "ExpressionStatement",
                  "src": "21128:18:25"
                }
              ]
            },
            "documentation": null,
            "id": 7227,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "uqdiv",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 7213,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7210,
                  "mutability": "mutable",
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7227,
                  "src": "21066:9:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint224",
                    "typeString": "uint224"
                  },
                  "typeName": {
                    "id": 7209,
                    "name": "uint224",
                    "nodeType": "ElementaryTypeName",
                    "src": "21066:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint224",
                      "typeString": "uint224"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7212,
                  "mutability": "mutable",
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7227,
                  "src": "21077:9:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint112",
                    "typeString": "uint112"
                  },
                  "typeName": {
                    "id": 7211,
                    "name": "uint112",
                    "nodeType": "ElementaryTypeName",
                    "src": "21077:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint112",
                      "typeString": "uint112"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "21065:22:25"
            },
            "returnParameters": {
              "id": 7216,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7215,
                  "mutability": "mutable",
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7227,
                  "src": "21111:9:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint224",
                    "typeString": "uint224"
                  },
                  "typeName": {
                    "id": 7214,
                    "name": "uint224",
                    "nodeType": "ElementaryTypeName",
                    "src": "21111:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint224",
                      "typeString": "uint224"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "21110:11:25"
            },
            "scope": 7228,
            "src": "21051:100:25",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 7229,
        "src": "20781:372:25"
      }
    ],
    "src": "0:21154:25"
  },
  "bytecode": "608060405234801561001057600080fd5b506040516129a63803806129a68339818101604052602081101561003357600080fd5b5051600180546001600160a01b0319166001600160a01b03909216919091179055612943806100636000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063a2e74af61161005b578063a2e74af6146100f0578063c9c6539614610118578063e6a4390514610146578063f46901ed1461017457610088565b8063017e7e581461008d578063094b7415146100b15780631e3dd18b146100b9578063574f2ba3146100d6575b600080fd5b61009561019a565b604080516001600160a01b039092168252519081900360200190f35b6100956101a9565b610095600480360360208110156100cf57600080fd5b50356101b8565b6100de6101df565b60408051918252519081900360200190f35b6101166004803603602081101561010657600080fd5b50356001600160a01b03166101e5565b005b6100956004803603604081101561012e57600080fd5b506001600160a01b038135811691602001351661025d565b6100956004803603604081101561015c57600080fd5b506001600160a01b0381358116916020013516610588565b6101166004803603602081101561018a57600080fd5b50356001600160a01b03166105ae565b6000546001600160a01b031681565b6001546001600160a01b031681565b600381815481106101c557fe5b6000918252602090912001546001600160a01b0316905081565b60035490565b6001546001600160a01b0316331461023b576040805162461bcd60e51b81526020600482015260146024820152732ab734b9bbb0b82b191d102327a92124a22222a760611b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000816001600160a01b0316836001600160a01b031614156102c6576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056323a204944454e544943414c5f4144445245535345530000604482015290519081900360640190fd5b600080836001600160a01b0316856001600160a01b0316106102e95783856102ec565b84845b90925090506001600160a01b03821661034c576040805162461bcd60e51b815260206004820152601760248201527f556e697377617056323a205a45524f5f41444452455353000000000000000000604482015290519081900360640190fd5b6001600160a01b038281166000908152600260209081526040808320858516845290915290205416156103bf576040805162461bcd60e51b8152602060048201526016602482015275556e697377617056323a20504149525f45584953545360501b604482015290519081900360640190fd5b6060604051806020016103d190610626565b6020820181038252601f19601f8201166040525090506000838360405160200180836001600160a01b031660601b8152601401826001600160a01b031660601b815260140192505050604051602081830303815290604052805190602001209050808251602084016000f59450846001600160a01b031663485cc95585856040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b0316815260200192505050600060405180830381600087803b15801561049e57600080fd5b505af11580156104b2573d6000803e3d6000fd5b505050506001600160a01b0384811660008181526002602081815260408084208987168086529083528185208054978d166001600160a01b031998891681179091559383528185208686528352818520805488168517905560038054600181018255958190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90950180549097168417909655925483519283529082015281517f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9929181900390910190a35050505092915050565b60026020908152600092835260408084209091529082529020546001600160a01b031681565b6001546001600160a01b03163314610604576040805162461bcd60e51b81526020600482015260146024820152732ab734b9bbb0b82b191d102327a92124a22222a760611b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6122da806106348339019056fe60806040526001600c5534801561001557600080fd5b50604080518082018252600a8152692ab734b9bbb0b8102b1960b11b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fbfcc8ef98ffbf7b6c3fec7bf5185b566b9863e35a9d83acd49ad6824b5969738818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b031916331790556121d2806101086000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a714610534578063d505accf1461053c578063dd62ed3e1461058d578063fff6cae9146105bb576101a9565b8063ba9a7a56146104fe578063bc25cf7714610506578063c45a01551461052c576101a9565b80637ecebe00116100d35780637ecebe001461046557806389afcb441461048b57806395d89b41146104ca578063a9059cbb146104d2576101a9565b80636a6278421461041157806370a08231146104375780637464fc3d1461045d576101a9565b806323b872dd116101665780633644e515116101405780633644e515146103cb578063485cc955146103d35780635909c0d5146104015780635a3d549314610409576101a9565b806323b872dd1461036f57806330adf81f146103a5578063313ce567146103ad576101a9565b8063022c0d9f146101ae57806306fdde031461023c5780630902f1ac146102b9578063095ea7b3146102f15780630dfe16811461033157806318160ddd14610355575b600080fd5b61023a600480360360808110156101c457600080fd5b8135916020810135916001600160a01b0360408301351691908101906080810160608201356401000000008111156101fb57600080fd5b82018360208201111561020d57600080fd5b8035906020019184600183028401116401000000008311171561022f57600080fd5b5090925090506105c3565b005b610244610acb565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027e578181015183820152602001610266565b50505050905090810190601f1680156102ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102c1610af1565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b61031d6004803603604081101561030757600080fd5b506001600160a01b038135169060200135610b1b565b604080519115158252519081900360200190f35b610339610b32565b604080516001600160a01b039092168252519081900360200190f35b61035d610b41565b60408051918252519081900360200190f35b61031d6004803603606081101561038557600080fd5b506001600160a01b03813581169160208101359091169060400135610b47565b61035d610bdb565b6103b5610bff565b6040805160ff9092168252519081900360200190f35b61035d610c04565b61023a600480360360408110156103e957600080fd5b506001600160a01b0381358116916020013516610c0a565b61035d610c8e565b61035d610c94565b61035d6004803603602081101561042757600080fd5b50356001600160a01b0316610c9a565b61035d6004803603602081101561044d57600080fd5b50356001600160a01b0316610f76565b61035d610f88565b61035d6004803603602081101561047b57600080fd5b50356001600160a01b0316610f8e565b6104b1600480360360208110156104a157600080fd5b50356001600160a01b0316610fa0565b6040805192835260208301919091528051918290030190f35b610244611334565b61031d600480360360408110156104e857600080fd5b506001600160a01b038135169060200135611356565b61035d611363565b61023a6004803603602081101561051c57600080fd5b50356001600160a01b0316611369565b6103396114db565b6103396114ea565b61023a600480360360e081101561055257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356114f9565b61035d600480360360408110156105a357600080fd5b506001600160a01b03813581169160200135166116fb565b61023a611718565b600c5460011461060e576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c55841515806106215750600084115b61065c5760405162461bcd60e51b81526004018080602001828103825260258152602001806120e36025913960400191505060405180910390fd5b600080610667610af1565b5091509150816001600160701b03168710801561068c5750806001600160701b031686105b6106c75760405162461bcd60e51b815260040180806020018281038252602181526020018061212c6021913960400191505060405180910390fd5b60065460075460009182916001600160a01b039182169190811690891682148015906107055750806001600160a01b0316896001600160a01b031614155b61074e576040805162461bcd60e51b8152602060048201526015602482015274556e697377617056323a20494e56414c49445f544f60581b604482015290519081900360640190fd5b8a1561075f5761075f828a8d61187a565b891561077057610770818a8c61187a565b861561082257886001600160a01b03166310d1e85c338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561080957600080fd5b505af115801561081d573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561086857600080fd5b505afa15801561087c573d6000803e3d6000fd5b505050506040513d602081101561089257600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b1580156108de57600080fd5b505afa1580156108f2573d6000803e3d6000fd5b505050506040513d602081101561090857600080fd5b5051925060009150506001600160701b0385168a9003831161092b57600061093a565b89856001600160701b03160383035b9050600089856001600160701b0316038311610957576000610966565b89856001600160701b03160383035b905060008211806109775750600081115b6109b25760405162461bcd60e51b81526004018080602001828103825260248152602001806121086024913960400191505060405180910390fd5b60006109d46109c2846003611a14565b6109ce876103e8611a14565b90611a77565b905060006109e66109c2846003611a14565b9050610a0b620f4240610a056001600160701b038b8116908b16611a14565b90611a14565b610a158383611a14565b1015610a57576040805162461bcd60e51b815260206004820152600c60248201526b556e697377617056323a204b60a01b604482015290519081900360640190fd5b5050610a6584848888611ac7565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280600a8152602001692ab734b9bbb0b8102b1960b11b81525081565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610b28338484611c86565b5060015b92915050565b6006546001600160a01b031681565b60005481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610bc6576001600160a01b0384166000908152600260209081526040808320338452909152902054610ba19083611a77565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610bd1848484611ce8565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005546001600160a01b03163314610c60576040805162461bcd60e51b81526020600482015260146024820152732ab734b9bbb0b82b191d102327a92124a22222a760611b604482015290519081900360640190fd5b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c54600114610ce7576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c81905580610cf7610af1565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610d4b57600080fd5b505afa158015610d5f573d6000803e3d6000fd5b505050506040513d6020811015610d7557600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610dc857600080fd5b505afa158015610ddc573d6000803e3d6000fd5b505050506040513d6020811015610df257600080fd5b505190506000610e0b836001600160701b038716611a77565b90506000610e22836001600160701b038716611a77565b90506000610e308787611d96565b60005490915080610e6757610e536103e86109ce610e4e8787611a14565b611ed6565b9850610e6260006103e8611f28565b610eaa565b610ea76001600160701b038916610e7e8684611a14565b81610e8557fe5b046001600160701b038916610e9a8685611a14565b81610ea157fe5b04611fb2565b98505b60008911610ee95760405162461bcd60e51b81526004018080602001828103825260288152602001806121756028913960400191505060405180910390fd5b610ef38a8a611f28565b610eff86868a8a611ac7565b8115610f2957600854610f25906001600160701b0380821691600160701b900416611a14565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c54600114610fee576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c81905580610ffe610af1565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b15801561105a57600080fd5b505afa15801561106e573d6000803e3d6000fd5b505050506040513d602081101561108457600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b1580156110d257600080fd5b505afa1580156110e6573d6000803e3d6000fd5b505050506040513d60208110156110fc57600080fd5b50513060009081526001602052604081205491925061111b8888611d96565b6000549091508061112c8487611a14565b8161113357fe5b049a50806111418486611a14565b8161114857fe5b04995060008b11801561115b575060008a115b6111965760405162461bcd60e51b815260040180806020018281038252602881526020018061214d6028913960400191505060405180910390fd5b6111a03084611fca565b6111ab878d8d61187a565b6111b6868d8c61187a565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b1580156111fc57600080fd5b505afa158015611210573d6000803e3d6000fd5b505050506040513d602081101561122657600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b15801561127257600080fd5b505afa158015611286573d6000803e3d6000fd5b505050506040513d602081101561129c57600080fd5b505193506112ac85858b8b611ac7565b81156112d6576008546112d2906001600160701b0380821691600160701b900416611a14565b600b555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b604051806040016040528060068152602001652aa72496ab1960d11b81525081565b6000610b28338484611ce8565b6103e881565b600c546001146113b4576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c55600654600754600854604080516370a0823160e01b815230600482015290516001600160a01b03948516949093169261145d9285928792611458926001600160701b03169185916370a0823191602480820192602092909190829003018186803b15801561142657600080fd5b505afa15801561143a573d6000803e3d6000fd5b505050506040513d602081101561145057600080fd5b505190611a77565b61187a565b6114d181846114586008600e9054906101000a90046001600160701b03166001600160701b0316856001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561142657600080fd5b50506001600c5550565b6005546001600160a01b031681565b6007546001600160a01b031681565b42841015611543576040805162461bcd60e51b8152602060048201526012602482015271155b9a5cddd85c158c8e881156141254915160721b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa15801561165e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906116945750886001600160a01b0316816001600160a01b0316145b6116e5576040805162461bcd60e51b815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b6116f0898989611c86565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611763576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c55600654604080516370a0823160e01b81523060048201529051611873926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156117b457600080fd5b505afa1580156117c8573d6000803e3d6000fd5b505050506040513d60208110156117de57600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561182b57600080fd5b505afa15801561183f573d6000803e3d6000fd5b505050506040513d602081101561185557600080fd5b50516008546001600160701b0380821691600160701b900416611ac7565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b602083106119275780518252601f199092019160209182019101611908565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611989576040519150601f19603f3d011682016040523d82523d6000602084013e61198e565b606091505b50915091508180156119bc5750805115806119bc57508080602001905160208110156119b957600080fd5b50515b611a0d576040805162461bcd60e51b815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b6000811580611a2f57505080820282828281611a2c57fe5b04145b610b2c576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820382811115610b2c576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001600160701b038411801590611ae557506001600160701b038311155b611b2c576040805162461bcd60e51b8152602060048201526013602482015272556e697377617056323a204f564552464c4f5760681b604482015290519081900360640190fd5b60085463ffffffff42811691600160e01b90048116820390811615801590611b5c57506001600160701b03841615155b8015611b7057506001600160701b03831615155b15611bdb578063ffffffff16611b9885611b898661205c565b6001600160e01b03169061206e565b600980546001600160e01b03929092169290920201905563ffffffff8116611bc384611b898761205c565b600a80546001600160e01b0392909216929092020190555b600880546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316600090815260016020526040902054611d0b9082611a77565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611d3a9082612093565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015611de757600080fd5b505afa158015611dfb573d6000803e3d6000fd5b505050506040513d6020811015611e1157600080fd5b5051600b546001600160a01b038216158015945091925090611ec2578015611ebd576000611e4e610e4e6001600160701b03888116908816611a14565b90506000611e5b83611ed6565b905080821115611eba576000611e7d611e748484611a77565b60005490611a14565b90506000611e9683611e90866005611a14565b90612093565b90506000818381611ea357fe5b0490508015611eb657611eb68782611f28565b5050505b50505b611ece565b8015611ece576000600b555b505092915050565b60006003821115611f19575080600160028204015b81811015611f1357809150600281828581611f0257fe5b040181611f0b57fe5b049050611eeb565b50611f23565b8115611f23575060015b919050565b600054611f359082612093565b60009081556001600160a01b038316815260016020526040902054611f5a9082612093565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310611fc15781611fc3565b825b9392505050565b6001600160a01b038216600090815260016020526040902054611fed9082611a77565b6001600160a01b038316600090815260016020526040812091909155546120149082611a77565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b0384168161208b57fe5b049392505050565b80820182811015610b2c576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220d6fa0fef600f0b8aaaa321d5a12bd0e2ff8165339e2e09203089b48c2a4e6b4564736f6c634300060c0033a2646970667358221220e453318ad5d4e6da126e43b97c2eb2e7c521bc16e9de0bec234c0a5425d7e98064736f6c634300060c0033",
  "bytecodeSha1": "96941fcfe437009eefc029c2d55b06eda25c9c17",
  "compiler": {
    "evm_version": "istanbul",
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "version": "0.6.12+commit.27d51765"
  },
  "contractName": "MockUniswapV2Factory",
  "coverageMap": {
    "branches": {
      "25": {
        "MockUniswapV2Factory.createPair": {
          "14": [
            18436,
            18452,
            true
          ],
          "15": [
            18528,
            18543,
            true
          ],
          "16": [
            18595,
            18615,
            true
          ],
          "17": [
            18657,
            18694,
            true
          ]
        },
        "MockUniswapV2Factory.setFeeTo": {
          "18": [
            19327,
            19352,
            true
          ]
        },
        "MockUniswapV2Factory.setFeeToSetter": {
          "13": [
            19475,
            19500,
            true
          ]
        }
      }
    },
    "statements": {
      "25": {
        "MockUniswapV2Factory.allPairsLength": {
          "0": [
            18307,
            18329
          ]
        },
        "MockUniswapV2Factory.createPair": {
          "3": [
            18428,
            18487
          ],
          "4": [
            18587,
            18643
          ],
          "5": [
            18649,
            18721
          ],
          "6": [
            18991,
            19058
          ],
          "7": [
            19064,
            19094
          ],
          "8": [
            19100,
            19130
          ],
          "9": [
            19181,
            19200
          ],
          "10": [
            19206,
            19261
          ]
        },
        "MockUniswapV2Factory.setFeeTo": {
          "11": [
            19319,
            19377
          ],
          "12": [
            19383,
            19397
          ]
        },
        "MockUniswapV2Factory.setFeeToSetter": {
          "1": [
            19467,
            19525
          ],
          "2": [
            19531,
            19557
          ]
        }
      }
    }
  },
  "dependencies": [
    "IUniswapV2Callee",
    "MockUniswapV2FactoryIERC20",
    "MockUniswapV2FactoryIUniswapV2Factory",
    "MockUniswapV2FactoryIUniswapV2Pair",
    "MockUniswapV2FactoryMah",
    "MockUniswapV2FactorySafeMath",
    "MockUniswapV2FactoryUniswapV2Pair",
    "UQ112x112",
    "UniswapV2ERC20"
  ],
  "deployedBytecode": "608060405234801561001057600080fd5b50600436106100885760003560e01c8063a2e74af61161005b578063a2e74af6146100f0578063c9c6539614610118578063e6a4390514610146578063f46901ed1461017457610088565b8063017e7e581461008d578063094b7415146100b15780631e3dd18b146100b9578063574f2ba3146100d6575b600080fd5b61009561019a565b604080516001600160a01b039092168252519081900360200190f35b6100956101a9565b610095600480360360208110156100cf57600080fd5b50356101b8565b6100de6101df565b60408051918252519081900360200190f35b6101166004803603602081101561010657600080fd5b50356001600160a01b03166101e5565b005b6100956004803603604081101561012e57600080fd5b506001600160a01b038135811691602001351661025d565b6100956004803603604081101561015c57600080fd5b506001600160a01b0381358116916020013516610588565b6101166004803603602081101561018a57600080fd5b50356001600160a01b03166105ae565b6000546001600160a01b031681565b6001546001600160a01b031681565b600381815481106101c557fe5b6000918252602090912001546001600160a01b0316905081565b60035490565b6001546001600160a01b0316331461023b576040805162461bcd60e51b81526020600482015260146024820152732ab734b9bbb0b82b191d102327a92124a22222a760611b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000816001600160a01b0316836001600160a01b031614156102c6576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056323a204944454e544943414c5f4144445245535345530000604482015290519081900360640190fd5b600080836001600160a01b0316856001600160a01b0316106102e95783856102ec565b84845b90925090506001600160a01b03821661034c576040805162461bcd60e51b815260206004820152601760248201527f556e697377617056323a205a45524f5f41444452455353000000000000000000604482015290519081900360640190fd5b6001600160a01b038281166000908152600260209081526040808320858516845290915290205416156103bf576040805162461bcd60e51b8152602060048201526016602482015275556e697377617056323a20504149525f45584953545360501b604482015290519081900360640190fd5b6060604051806020016103d190610626565b6020820181038252601f19601f8201166040525090506000838360405160200180836001600160a01b031660601b8152601401826001600160a01b031660601b815260140192505050604051602081830303815290604052805190602001209050808251602084016000f59450846001600160a01b031663485cc95585856040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b0316815260200192505050600060405180830381600087803b15801561049e57600080fd5b505af11580156104b2573d6000803e3d6000fd5b505050506001600160a01b0384811660008181526002602081815260408084208987168086529083528185208054978d166001600160a01b031998891681179091559383528185208686528352818520805488168517905560038054600181018255958190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90950180549097168417909655925483519283529082015281517f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9929181900390910190a35050505092915050565b60026020908152600092835260408084209091529082529020546001600160a01b031681565b6001546001600160a01b03163314610604576040805162461bcd60e51b81526020600482015260146024820152732ab734b9bbb0b82b191d102327a92124a22222a760611b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6122da806106348339019056fe60806040526001600c5534801561001557600080fd5b50604080518082018252600a8152692ab734b9bbb0b8102b1960b11b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fbfcc8ef98ffbf7b6c3fec7bf5185b566b9863e35a9d83acd49ad6824b5969738818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b031916331790556121d2806101086000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a714610534578063d505accf1461053c578063dd62ed3e1461058d578063fff6cae9146105bb576101a9565b8063ba9a7a56146104fe578063bc25cf7714610506578063c45a01551461052c576101a9565b80637ecebe00116100d35780637ecebe001461046557806389afcb441461048b57806395d89b41146104ca578063a9059cbb146104d2576101a9565b80636a6278421461041157806370a08231146104375780637464fc3d1461045d576101a9565b806323b872dd116101665780633644e515116101405780633644e515146103cb578063485cc955146103d35780635909c0d5146104015780635a3d549314610409576101a9565b806323b872dd1461036f57806330adf81f146103a5578063313ce567146103ad576101a9565b8063022c0d9f146101ae57806306fdde031461023c5780630902f1ac146102b9578063095ea7b3146102f15780630dfe16811461033157806318160ddd14610355575b600080fd5b61023a600480360360808110156101c457600080fd5b8135916020810135916001600160a01b0360408301351691908101906080810160608201356401000000008111156101fb57600080fd5b82018360208201111561020d57600080fd5b8035906020019184600183028401116401000000008311171561022f57600080fd5b5090925090506105c3565b005b610244610acb565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027e578181015183820152602001610266565b50505050905090810190601f1680156102ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102c1610af1565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b61031d6004803603604081101561030757600080fd5b506001600160a01b038135169060200135610b1b565b604080519115158252519081900360200190f35b610339610b32565b604080516001600160a01b039092168252519081900360200190f35b61035d610b41565b60408051918252519081900360200190f35b61031d6004803603606081101561038557600080fd5b506001600160a01b03813581169160208101359091169060400135610b47565b61035d610bdb565b6103b5610bff565b6040805160ff9092168252519081900360200190f35b61035d610c04565b61023a600480360360408110156103e957600080fd5b506001600160a01b0381358116916020013516610c0a565b61035d610c8e565b61035d610c94565b61035d6004803603602081101561042757600080fd5b50356001600160a01b0316610c9a565b61035d6004803603602081101561044d57600080fd5b50356001600160a01b0316610f76565b61035d610f88565b61035d6004803603602081101561047b57600080fd5b50356001600160a01b0316610f8e565b6104b1600480360360208110156104a157600080fd5b50356001600160a01b0316610fa0565b6040805192835260208301919091528051918290030190f35b610244611334565b61031d600480360360408110156104e857600080fd5b506001600160a01b038135169060200135611356565b61035d611363565b61023a6004803603602081101561051c57600080fd5b50356001600160a01b0316611369565b6103396114db565b6103396114ea565b61023a600480360360e081101561055257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356114f9565b61035d600480360360408110156105a357600080fd5b506001600160a01b03813581169160200135166116fb565b61023a611718565b600c5460011461060e576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c55841515806106215750600084115b61065c5760405162461bcd60e51b81526004018080602001828103825260258152602001806120e36025913960400191505060405180910390fd5b600080610667610af1565b5091509150816001600160701b03168710801561068c5750806001600160701b031686105b6106c75760405162461bcd60e51b815260040180806020018281038252602181526020018061212c6021913960400191505060405180910390fd5b60065460075460009182916001600160a01b039182169190811690891682148015906107055750806001600160a01b0316896001600160a01b031614155b61074e576040805162461bcd60e51b8152602060048201526015602482015274556e697377617056323a20494e56414c49445f544f60581b604482015290519081900360640190fd5b8a1561075f5761075f828a8d61187a565b891561077057610770818a8c61187a565b861561082257886001600160a01b03166310d1e85c338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561080957600080fd5b505af115801561081d573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561086857600080fd5b505afa15801561087c573d6000803e3d6000fd5b505050506040513d602081101561089257600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b1580156108de57600080fd5b505afa1580156108f2573d6000803e3d6000fd5b505050506040513d602081101561090857600080fd5b5051925060009150506001600160701b0385168a9003831161092b57600061093a565b89856001600160701b03160383035b9050600089856001600160701b0316038311610957576000610966565b89856001600160701b03160383035b905060008211806109775750600081115b6109b25760405162461bcd60e51b81526004018080602001828103825260248152602001806121086024913960400191505060405180910390fd5b60006109d46109c2846003611a14565b6109ce876103e8611a14565b90611a77565b905060006109e66109c2846003611a14565b9050610a0b620f4240610a056001600160701b038b8116908b16611a14565b90611a14565b610a158383611a14565b1015610a57576040805162461bcd60e51b815260206004820152600c60248201526b556e697377617056323a204b60a01b604482015290519081900360640190fd5b5050610a6584848888611ac7565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280600a8152602001692ab734b9bbb0b8102b1960b11b81525081565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610b28338484611c86565b5060015b92915050565b6006546001600160a01b031681565b60005481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610bc6576001600160a01b0384166000908152600260209081526040808320338452909152902054610ba19083611a77565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610bd1848484611ce8565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005546001600160a01b03163314610c60576040805162461bcd60e51b81526020600482015260146024820152732ab734b9bbb0b82b191d102327a92124a22222a760611b604482015290519081900360640190fd5b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c54600114610ce7576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c81905580610cf7610af1565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610d4b57600080fd5b505afa158015610d5f573d6000803e3d6000fd5b505050506040513d6020811015610d7557600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610dc857600080fd5b505afa158015610ddc573d6000803e3d6000fd5b505050506040513d6020811015610df257600080fd5b505190506000610e0b836001600160701b038716611a77565b90506000610e22836001600160701b038716611a77565b90506000610e308787611d96565b60005490915080610e6757610e536103e86109ce610e4e8787611a14565b611ed6565b9850610e6260006103e8611f28565b610eaa565b610ea76001600160701b038916610e7e8684611a14565b81610e8557fe5b046001600160701b038916610e9a8685611a14565b81610ea157fe5b04611fb2565b98505b60008911610ee95760405162461bcd60e51b81526004018080602001828103825260288152602001806121756028913960400191505060405180910390fd5b610ef38a8a611f28565b610eff86868a8a611ac7565b8115610f2957600854610f25906001600160701b0380821691600160701b900416611a14565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c54600114610fee576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c81905580610ffe610af1565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b15801561105a57600080fd5b505afa15801561106e573d6000803e3d6000fd5b505050506040513d602081101561108457600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b1580156110d257600080fd5b505afa1580156110e6573d6000803e3d6000fd5b505050506040513d60208110156110fc57600080fd5b50513060009081526001602052604081205491925061111b8888611d96565b6000549091508061112c8487611a14565b8161113357fe5b049a50806111418486611a14565b8161114857fe5b04995060008b11801561115b575060008a115b6111965760405162461bcd60e51b815260040180806020018281038252602881526020018061214d6028913960400191505060405180910390fd5b6111a03084611fca565b6111ab878d8d61187a565b6111b6868d8c61187a565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b1580156111fc57600080fd5b505afa158015611210573d6000803e3d6000fd5b505050506040513d602081101561122657600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b15801561127257600080fd5b505afa158015611286573d6000803e3d6000fd5b505050506040513d602081101561129c57600080fd5b505193506112ac85858b8b611ac7565b81156112d6576008546112d2906001600160701b0380821691600160701b900416611a14565b600b555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b604051806040016040528060068152602001652aa72496ab1960d11b81525081565b6000610b28338484611ce8565b6103e881565b600c546001146113b4576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c55600654600754600854604080516370a0823160e01b815230600482015290516001600160a01b03948516949093169261145d9285928792611458926001600160701b03169185916370a0823191602480820192602092909190829003018186803b15801561142657600080fd5b505afa15801561143a573d6000803e3d6000fd5b505050506040513d602081101561145057600080fd5b505190611a77565b61187a565b6114d181846114586008600e9054906101000a90046001600160701b03166001600160701b0316856001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561142657600080fd5b50506001600c5550565b6005546001600160a01b031681565b6007546001600160a01b031681565b42841015611543576040805162461bcd60e51b8152602060048201526012602482015271155b9a5cddd85c158c8e881156141254915160721b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa15801561165e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906116945750886001600160a01b0316816001600160a01b0316145b6116e5576040805162461bcd60e51b815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b6116f0898989611c86565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611763576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c55600654604080516370a0823160e01b81523060048201529051611873926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156117b457600080fd5b505afa1580156117c8573d6000803e3d6000fd5b505050506040513d60208110156117de57600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561182b57600080fd5b505afa15801561183f573d6000803e3d6000fd5b505050506040513d602081101561185557600080fd5b50516008546001600160701b0380821691600160701b900416611ac7565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b602083106119275780518252601f199092019160209182019101611908565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611989576040519150601f19603f3d011682016040523d82523d6000602084013e61198e565b606091505b50915091508180156119bc5750805115806119bc57508080602001905160208110156119b957600080fd5b50515b611a0d576040805162461bcd60e51b815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b6000811580611a2f57505080820282828281611a2c57fe5b04145b610b2c576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820382811115610b2c576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001600160701b038411801590611ae557506001600160701b038311155b611b2c576040805162461bcd60e51b8152602060048201526013602482015272556e697377617056323a204f564552464c4f5760681b604482015290519081900360640190fd5b60085463ffffffff42811691600160e01b90048116820390811615801590611b5c57506001600160701b03841615155b8015611b7057506001600160701b03831615155b15611bdb578063ffffffff16611b9885611b898661205c565b6001600160e01b03169061206e565b600980546001600160e01b03929092169290920201905563ffffffff8116611bc384611b898761205c565b600a80546001600160e01b0392909216929092020190555b600880546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316600090815260016020526040902054611d0b9082611a77565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611d3a9082612093565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015611de757600080fd5b505afa158015611dfb573d6000803e3d6000fd5b505050506040513d6020811015611e1157600080fd5b5051600b546001600160a01b038216158015945091925090611ec2578015611ebd576000611e4e610e4e6001600160701b03888116908816611a14565b90506000611e5b83611ed6565b905080821115611eba576000611e7d611e748484611a77565b60005490611a14565b90506000611e9683611e90866005611a14565b90612093565b90506000818381611ea357fe5b0490508015611eb657611eb68782611f28565b5050505b50505b611ece565b8015611ece576000600b555b505092915050565b60006003821115611f19575080600160028204015b81811015611f1357809150600281828581611f0257fe5b040181611f0b57fe5b049050611eeb565b50611f23565b8115611f23575060015b919050565b600054611f359082612093565b60009081556001600160a01b038316815260016020526040902054611f5a9082612093565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310611fc15781611fc3565b825b9392505050565b6001600160a01b038216600090815260016020526040902054611fed9082611a77565b6001600160a01b038316600090815260016020526040812091909155546120149082611a77565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b0384168161208b57fe5b049392505050565b80820182811015610b2c576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220d6fa0fef600f0b8aaaa321d5a12bd0e2ff8165339e2e09203089b48c2a4e6b4564736f6c634300060c0033a2646970667358221220e453318ad5d4e6da126e43b97c2eb2e7c521bc16e9de0bec234c0a5425d7e98064736f6c634300060c0033",
  "deployedSourceMap": "17889:1675:25:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17923:20;;;:::i;:::-;;;;-1:-1:-1;;;;;17923:20:25;;;;;;;;;;;;;;17947:26;;;:::i;18044:25::-;;;;;;;;;;;;;;;;-1:-1:-1;18044:25:25;;:::i;18246:88::-;;;:::i;:::-;;;;;;;;;;;;;;;;19406:156;;;;;;;;;;;;;;;;-1:-1:-1;19406:156:25;-1:-1:-1;;;;;19406:156:25;;:::i;:::-;;18338:928;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18338:928:25;;;;;;;;;;:::i;17978:62::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17978:62:25;;;;;;;;;;:::i;19270:132::-;;;;;;;;;;;;;;;;-1:-1:-1;19270:132:25;-1:-1:-1;;;;;19270:132:25;;:::i;17923:20::-;;;-1:-1:-1;;;;;17923:20:25;;:::o;17947:26::-;;;-1:-1:-1;;;;;17947:26:25;;:::o;18044:25::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18044:25:25;;-1:-1:-1;18044:25:25;:::o;18246:88::-;18314:8;:15;18246:88;:::o;19406:156::-;19489:11;;-1:-1:-1;;;;;19489:11:25;19475:10;:25;19467:58;;;;;-1:-1:-1;;;19467:58:25;;;;;;;;;;;;-1:-1:-1;;;19467:58:25;;;;;;;;;;;;;;;19531:11;:26;;-1:-1:-1;;;;;;19531:26:25;-1:-1:-1;;;;;19531:26:25;;;;;;;;;;19406:156::o;18338:928::-;18408:12;18446:6;-1:-1:-1;;;;;18436:16:25;:6;-1:-1:-1;;;;;18436:16:25;;;18428:59;;;;;-1:-1:-1;;;18428:59:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;18494:14;18510;18537:6;-1:-1:-1;;;;;18528:15:25;:6;-1:-1:-1;;;;;18528:15:25;;:53;;18566:6;18574;18528:53;;;18547:6;18555;18528:53;18493:88;;-1:-1:-1;18493:88:25;-1:-1:-1;;;;;;18595:20:25;;18587:56;;;;;-1:-1:-1;;;18587:56:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18657:15:25;;;18692:1;18657:15;;;:7;:15;;;;;;;;:23;;;;;;;;;;;;:37;18649:72;;;;;-1:-1:-1;;;18649:72:25;;;;;;;;;;;;-1:-1:-1;;;18649:72:25;;;;;;;;;;;;;;;18757:21;18781:52;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;18757:76;;18839:12;18881:6;18889;18864:32;;;;;;-1:-1:-1;;;;;18864:32:25;;;;;;;;-1:-1:-1;;;;;18864:32:25;;;;;;;;;;;;;;;;;;;;;;;18854:43;;;;;;18839:58;;18975:4;18964:8;18958:15;18953:2;18943:8;18939:17;18936:1;18928:52;18920:60;;19026:4;-1:-1:-1;;;;;18991:51:25;;19043:6;19051;18991:67;;;;;;;;;;;;;-1:-1:-1;;;;;18991:67:25;;;;;;-1:-1:-1;;;;;18991:67:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;19064:15:25;;;;;;;:7;:15;;;;;;;;:23;;;;;;;;;;;;:30;;;;;-1:-1:-1;;;;;;19064:30:25;;;;;;;;19100:15;;;;;;:23;;;;;;;;:30;;;;;;;;19181:8;:19;;-1:-1:-1;19181:19:25;;;;;;;;;;;;;;;;;;;;;;19245:15;;19211:50;;;;;;;;;;;;;;;;;;;;;;18338:928;;;;;;;;:::o;17978:62::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17978:62:25;;:::o;19270:132::-;19341:11;;-1:-1:-1;;;;;19341:11:25;19327:10;:25;19319:58;;;;;-1:-1:-1;;;19319:58:25;;;;;;;;;;;;-1:-1:-1;;;19319:58:25;;;;;;;;;;;;;;;19383:5;:14;;-1:-1:-1;;;;;;19383:14:25;-1:-1:-1;;;;;19383:14:25;;;;;;;;;;19270:132::o;-1:-1:-1:-;;;;;;;;:::o",
  "language": "Solidity",
  "natspec": {
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "offset": [
    17889,
    19564
  ],
  "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA2E74AF6 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA2E74AF6 EQ PUSH2 0xF0 JUMPI DUP1 PUSH4 0xC9C65396 EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0xE6A43905 EQ PUSH2 0x146 JUMPI DUP1 PUSH4 0xF46901ED EQ PUSH2 0x174 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x17E7E58 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x94B7415 EQ PUSH2 0xB1 JUMPI DUP1 PUSH4 0x1E3DD18B EQ PUSH2 0xB9 JUMPI DUP1 PUSH4 0x574F2BA3 EQ PUSH2 0xD6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x19A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x95 PUSH2 0x1A9 JUMP JUMPDEST PUSH2 0x95 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1B8 JUMP JUMPDEST PUSH2 0xDE PUSH2 0x1DF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x116 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x106 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1E5 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x95 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x25D JUMP JUMPDEST PUSH2 0x95 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x15C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x588 JUMP JUMPDEST PUSH2 0x116 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5AE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1C5 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x23B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x2AB734B9BBB0B82B191D102327A92124A22222A7 PUSH1 0x61 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2C6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A204944454E544943414C5F4144445245535345530000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x2E9 JUMPI DUP4 DUP6 PUSH2 0x2EC JUMP JUMPDEST DUP5 DUP5 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x34C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A205A45524F5F41444452455353000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD AND ISZERO PUSH2 0x3BF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x556E697377617056323A20504149525F455849535453 PUSH1 0x50 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH2 0x3D1 SWAP1 PUSH2 0x626 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD DUP2 SUB DUP3 MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND PUSH1 0x40 MSTORE POP SWAP1 POP PUSH1 0x0 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE PUSH1 0x14 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE PUSH1 0x14 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP1 DUP3 MLOAD PUSH1 0x20 DUP5 ADD PUSH1 0x0 CREATE2 SWAP5 POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x485CC955 DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x49E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP10 DUP8 AND DUP1 DUP7 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP6 KECCAK256 DUP1 SLOAD SWAP8 DUP14 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP9 DUP10 AND DUP2 OR SWAP1 SWAP2 SSTORE SWAP4 DUP4 MSTORE DUP2 DUP6 KECCAK256 DUP7 DUP7 MSTORE DUP4 MSTORE DUP2 DUP6 KECCAK256 DUP1 SLOAD DUP9 AND DUP6 OR SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP6 DUP2 SWAP1 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP1 SWAP6 ADD DUP1 SLOAD SWAP1 SWAP8 AND DUP5 OR SWAP1 SWAP7 SSTORE SWAP3 SLOAD DUP4 MLOAD SWAP3 DUP4 MSTORE SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0xD3648BD0F6BA80134A33BA9275AC585D9D315F0AD8355CDDEFDE31AFA28D0E9 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x604 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x2AB734B9BBB0B82B191D102327A92124A22222A7 PUSH1 0x61 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x22DA DUP1 PUSH2 0x634 DUP4 CODECOPY ADD SWAP1 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0xC SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xA DUP2 MSTORE PUSH10 0x2AB734B9BBB0B8102B19 PUSH1 0xB1 SHL PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0xBFCC8EF98FFBF7B6C3FEC7BF5185B566B9863E35A9D83ACD49AD6824B5969738 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x3 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH2 0x21D2 DUP1 PUSH2 0x108 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1A9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6A627842 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xBA9A7A56 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xD21220A7 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x534 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x53C JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x58D JUMPI DUP1 PUSH4 0xFFF6CAE9 EQ PUSH2 0x5BB JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0xBA9A7A56 EQ PUSH2 0x4FE JUMPI DUP1 PUSH4 0xBC25CF77 EQ PUSH2 0x506 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x52C JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x465 JUMPI DUP1 PUSH4 0x89AFCB44 EQ PUSH2 0x48B JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x4CA JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x4D2 JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0x6A627842 EQ PUSH2 0x411 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x437 JUMPI DUP1 PUSH4 0x7464FC3D EQ PUSH2 0x45D JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x3644E515 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x3CB JUMPI DUP1 PUSH4 0x485CC955 EQ PUSH2 0x3D3 JUMPI DUP1 PUSH4 0x5909C0D5 EQ PUSH2 0x401 JUMPI DUP1 PUSH4 0x5A3D5493 EQ PUSH2 0x409 JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x36F JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x3A5 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3AD JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0x22C0D9F EQ PUSH2 0x1AE JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x23C JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x2B9 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2F1 JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x331 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x355 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x23A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP4 ADD CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x20D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x22F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x5C3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x244 PUSH2 0xACB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x27E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x266 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2AB JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2C1 PUSH2 0xAF1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH4 0xFFFFFFFF AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x31D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xB1B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x339 PUSH2 0xB32 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x35D PUSH2 0xB41 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x31D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x385 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xB47 JUMP JUMPDEST PUSH2 0x35D PUSH2 0xBDB JUMP JUMPDEST PUSH2 0x3B5 PUSH2 0xBFF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x35D PUSH2 0xC04 JUMP JUMPDEST PUSH2 0x23A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xC0A JUMP JUMPDEST PUSH2 0x35D PUSH2 0xC8E JUMP JUMPDEST PUSH2 0x35D PUSH2 0xC94 JUMP JUMPDEST PUSH2 0x35D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x427 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xC9A JUMP JUMPDEST PUSH2 0x35D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x44D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF76 JUMP JUMPDEST PUSH2 0x35D PUSH2 0xF88 JUMP JUMPDEST PUSH2 0x35D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x47B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF8E JUMP JUMPDEST PUSH2 0x4B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xFA0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x244 PUSH2 0x1334 JUMP JUMPDEST PUSH2 0x31D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1356 JUMP JUMPDEST PUSH2 0x35D PUSH2 0x1363 JUMP JUMPDEST PUSH2 0x23A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1369 JUMP JUMPDEST PUSH2 0x339 PUSH2 0x14DB JUMP JUMPDEST PUSH2 0x339 PUSH2 0x14EA JUMP JUMPDEST PUSH2 0x23A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x552 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x14F9 JUMP JUMPDEST PUSH2 0x35D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x16FB JUMP JUMPDEST PUSH2 0x23A PUSH2 0x1718 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x60E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x155B9A5CDDD85C158C8E881313D0D2D151 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE DUP5 ISZERO ISZERO DUP1 PUSH2 0x621 JUMPI POP PUSH1 0x0 DUP5 GT JUMPDEST PUSH2 0x65C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x20E3 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x667 PUSH2 0xAF1 JUMP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND DUP8 LT DUP1 ISZERO PUSH2 0x68C JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND DUP7 LT JUMPDEST PUSH2 0x6C7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x212C PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 SWAP1 DUP2 AND SWAP1 DUP10 AND DUP3 EQ DUP1 ISZERO SWAP1 PUSH2 0x705 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST PUSH2 0x74E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x556E697377617056323A20494E56414C49445F544F PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP11 ISZERO PUSH2 0x75F JUMPI PUSH2 0x75F DUP3 DUP11 DUP14 PUSH2 0x187A JUMP JUMPDEST DUP10 ISZERO PUSH2 0x770 JUMPI PUSH2 0x770 DUP2 DUP11 DUP13 PUSH2 0x187A JUMP JUMPDEST DUP7 ISZERO PUSH2 0x822 JUMPI DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x10D1E85C CALLER DUP14 DUP14 DUP13 DUP13 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x809 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x81D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x868 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x87C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x892 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP6 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8F2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x908 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP PUSH1 0x0 SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP6 AND DUP11 SWAP1 SUB DUP4 GT PUSH2 0x92B JUMPI PUSH1 0x0 PUSH2 0x93A JUMP JUMPDEST DUP10 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND SUB DUP4 SUB JUMPDEST SWAP1 POP PUSH1 0x0 DUP10 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND SUB DUP4 GT PUSH2 0x957 JUMPI PUSH1 0x0 PUSH2 0x966 JUMP JUMPDEST DUP10 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND SUB DUP4 SUB JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 GT DUP1 PUSH2 0x977 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0x9B2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2108 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x9D4 PUSH2 0x9C2 DUP5 PUSH1 0x3 PUSH2 0x1A14 JUMP JUMPDEST PUSH2 0x9CE DUP8 PUSH2 0x3E8 PUSH2 0x1A14 JUMP JUMPDEST SWAP1 PUSH2 0x1A77 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x9E6 PUSH2 0x9C2 DUP5 PUSH1 0x3 PUSH2 0x1A14 JUMP JUMPDEST SWAP1 POP PUSH2 0xA0B PUSH3 0xF4240 PUSH2 0xA05 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP12 DUP2 AND SWAP1 DUP12 AND PUSH2 0x1A14 JUMP JUMPDEST SWAP1 PUSH2 0x1A14 JUMP JUMPDEST PUSH2 0xA15 DUP4 DUP4 PUSH2 0x1A14 JUMP JUMPDEST LT ISZERO PUSH2 0xA57 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x556E697377617056323A204B PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH2 0xA65 DUP5 DUP5 DUP9 DUP9 PUSH2 0x1AC7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP1 DUP3 ADD DUP14 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP13 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP2 CALLER SWAP2 PUSH32 0xD78AD95FA46C994B6551D0DA85FC275FE613CE37657FB8D5E3D130840159D822 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA DUP2 MSTORE PUSH1 0x20 ADD PUSH10 0x2AB734B9BBB0B8102B19 PUSH1 0xB1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP1 DUP3 AND SWAP3 PUSH1 0x1 PUSH1 0x70 SHL DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH1 0x1 PUSH1 0xE0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB28 CALLER DUP5 DUP5 PUSH2 0x1C86 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH1 0x0 NOT EQ PUSH2 0xBC6 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0xBA1 SWAP1 DUP4 PUSH2 0x1A77 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0xBD1 DUP5 DUP5 DUP5 PUSH2 0x1CE8 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xC60 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x2AB734B9BBB0B82B191D102327A92124A22222A7 PUSH1 0x61 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x7 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0xCE7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x155B9A5CDDD85C158C8E881313D0D2D151 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC DUP2 SWAP1 SSTORE DUP1 PUSH2 0xCF7 PUSH2 0xAF1 JUMP JUMPDEST POP PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD5F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDDC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0xE0B DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP8 AND PUSH2 0x1A77 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xE22 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP8 AND PUSH2 0x1A77 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xE30 DUP8 DUP8 PUSH2 0x1D96 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0xE67 JUMPI PUSH2 0xE53 PUSH2 0x3E8 PUSH2 0x9CE PUSH2 0xE4E DUP8 DUP8 PUSH2 0x1A14 JUMP JUMPDEST PUSH2 0x1ED6 JUMP JUMPDEST SWAP9 POP PUSH2 0xE62 PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x1F28 JUMP JUMPDEST PUSH2 0xEAA JUMP JUMPDEST PUSH2 0xEA7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP10 AND PUSH2 0xE7E DUP7 DUP5 PUSH2 0x1A14 JUMP JUMPDEST DUP2 PUSH2 0xE85 JUMPI INVALID JUMPDEST DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP10 AND PUSH2 0xE9A DUP7 DUP6 PUSH2 0x1A14 JUMP JUMPDEST DUP2 PUSH2 0xEA1 JUMPI INVALID JUMPDEST DIV PUSH2 0x1FB2 JUMP JUMPDEST SWAP9 POP JUMPDEST PUSH1 0x0 DUP10 GT PUSH2 0xEE9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2175 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xEF3 DUP11 DUP11 PUSH2 0x1F28 JUMP JUMPDEST PUSH2 0xEFF DUP7 DUP7 DUP11 DUP11 PUSH2 0x1AC7 JUMP JUMPDEST DUP2 ISZERO PUSH2 0xF29 JUMPI PUSH1 0x8 SLOAD PUSH2 0xF25 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP1 DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x70 SHL SWAP1 DIV AND PUSH2 0x1A14 JUMP JUMPDEST PUSH1 0xB SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP SWAP5 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0xFEE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x155B9A5CDDD85C158C8E881313D0D2D151 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC DUP2 SWAP1 SSTORE DUP1 PUSH2 0xFFE PUSH2 0xAF1 JUMP JUMPDEST POP PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP5 SWAP7 POP SWAP3 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP4 SWAP2 AND SWAP2 PUSH1 0x0 SWAP2 DUP5 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x105A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x106E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1084 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH2 0x111B DUP9 DUP9 PUSH2 0x1D96 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x112C DUP5 DUP8 PUSH2 0x1A14 JUMP JUMPDEST DUP2 PUSH2 0x1133 JUMPI INVALID JUMPDEST DIV SWAP11 POP DUP1 PUSH2 0x1141 DUP5 DUP7 PUSH2 0x1A14 JUMP JUMPDEST DUP2 PUSH2 0x1148 JUMPI INVALID JUMPDEST DIV SWAP10 POP PUSH1 0x0 DUP12 GT DUP1 ISZERO PUSH2 0x115B JUMPI POP PUSH1 0x0 DUP11 GT JUMPDEST PUSH2 0x1196 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x214D PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x11A0 ADDRESS DUP5 PUSH2 0x1FCA JUMP JUMPDEST PUSH2 0x11AB DUP8 DUP14 DUP14 PUSH2 0x187A JUMP JUMPDEST PUSH2 0x11B6 DUP7 DUP14 DUP13 PUSH2 0x187A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1210 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1226 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP7 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1286 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x129C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 POP PUSH2 0x12AC DUP6 DUP6 DUP12 DUP12 PUSH2 0x1AC7 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x12D6 JUMPI PUSH1 0x8 SLOAD PUSH2 0x12D2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP1 DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x70 SHL SWAP1 DIV AND PUSH2 0x1A14 JUMP JUMPDEST PUSH1 0xB SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP13 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP13 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 AND SWAP3 CALLER SWAP3 PUSH32 0xDCCD412F0B1252819CB1FD330B93224CA42612892BB3F4F789976E6D81936496 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP POP POP POP POP POP POP PUSH1 0x1 PUSH1 0xC DUP2 SWAP1 SSTORE POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 DUP2 MSTORE PUSH1 0x20 ADD PUSH6 0x2AA72496AB19 PUSH1 0xD1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB28 CALLER DUP5 DUP5 PUSH2 0x1CE8 JUMP JUMPDEST PUSH2 0x3E8 DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x13B4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x155B9A5CDDD85C158C8E881313D0D2D151 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE PUSH1 0x6 SLOAD PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND SWAP5 SWAP1 SWAP4 AND SWAP3 PUSH2 0x145D SWAP3 DUP6 SWAP3 DUP8 SWAP3 PUSH2 0x1458 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND SWAP2 DUP6 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1426 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x143A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1450 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH2 0x1A77 JUMP JUMPDEST PUSH2 0x187A JUMP JUMPDEST PUSH2 0x14D1 DUP2 DUP5 PUSH2 0x1458 PUSH1 0x8 PUSH1 0xE SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1426 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x1 PUSH1 0xC SSTORE POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x1543 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x155B9A5CDDD85C158C8E8811561412549151 PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH1 0x1F NOT DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x165E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1694 JUMPI POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x16E5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A20494E56414C49445F5349474E415455524500000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x16F0 DUP10 DUP10 DUP10 PUSH2 0x1C86 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD PUSH1 0x1 EQ PUSH2 0x1763 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x155B9A5CDDD85C158C8E881313D0D2D151 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SSTORE PUSH1 0x6 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x1873 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17C8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x17DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x182B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x183F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1855 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP1 DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x70 SHL SWAP1 DIV AND PUSH2 0x1AC7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xC SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH32 0x7472616E7366657228616464726573732C75696E743235362900000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP7 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP5 MSTORE SWAP2 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP2 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1927 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1908 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1989 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x198E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x19BC JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x19BC JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x19B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A0D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697377617056323A205452414E534645525F4641494C4544000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x1A2F JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x1A2C JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xB2C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x64732D6D6174682D6D756C2D6F766572666C6F77 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0xB2C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x64732D6D6174682D7375622D756E646572666C6F77 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP5 GT DUP1 ISZERO SWAP1 PUSH2 0x1AE5 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP4 GT ISZERO JUMPDEST PUSH2 0x1B2C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x556E697377617056323A204F564552464C4F57 PUSH1 0x68 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x8 SLOAD PUSH4 0xFFFFFFFF TIMESTAMP DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xE0 SHL SWAP1 DIV DUP2 AND DUP3 SUB SWAP1 DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1B5C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP5 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x1B70 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP4 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1BDB JUMPI DUP1 PUSH4 0xFFFFFFFF AND PUSH2 0x1B98 DUP6 PUSH2 0x1B89 DUP7 PUSH2 0x205C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND SWAP1 PUSH2 0x206E JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL ADD SWAP1 SSTORE PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0x1BC3 DUP5 PUSH2 0x1B89 DUP8 PUSH2 0x205C JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL ADD SWAP1 SSTORE JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP9 DUP2 AND SWAP2 SWAP1 SWAP2 OR PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x70 SHL NOT AND PUSH1 0x1 PUSH1 0x70 SHL DUP9 DUP4 AND DUP2 MUL SWAP2 SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0xE0 SHL PUSH4 0xFFFFFFFF DUP8 AND MUL OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP4 DIV SWAP1 SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x1C411E9A96E071241C2F21F7726B17AE89E3CAB4C78BE50E062B03A9FFFBBAD1 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1D0B SWAP1 DUP3 PUSH2 0x1A77 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x1D3A SWAP1 DUP3 PUSH2 0x2093 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x17E7E58 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1DE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DFB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0xB SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO DUP1 ISZERO SWAP5 POP SWAP2 SWAP3 POP SWAP1 PUSH2 0x1EC2 JUMPI DUP1 ISZERO PUSH2 0x1EBD JUMPI PUSH1 0x0 PUSH2 0x1E4E PUSH2 0xE4E PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP9 DUP2 AND SWAP1 DUP9 AND PUSH2 0x1A14 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1E5B DUP4 PUSH2 0x1ED6 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x1EBA JUMPI PUSH1 0x0 PUSH2 0x1E7D PUSH2 0x1E74 DUP5 DUP5 PUSH2 0x1A77 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 PUSH2 0x1A14 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1E96 DUP4 PUSH2 0x1E90 DUP7 PUSH1 0x5 PUSH2 0x1A14 JUMP JUMPDEST SWAP1 PUSH2 0x2093 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP4 DUP2 PUSH2 0x1EA3 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0x1EB6 JUMPI PUSH2 0x1EB6 DUP8 DUP3 PUSH2 0x1F28 JUMP JUMPDEST POP POP POP JUMPDEST POP POP JUMPDEST PUSH2 0x1ECE JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1ECE JUMPI PUSH1 0x0 PUSH1 0xB SSTORE JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP3 GT ISZERO PUSH2 0x1F19 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x2 DUP3 DIV ADD JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1F13 JUMPI DUP1 SWAP2 POP PUSH1 0x2 DUP2 DUP3 DUP6 DUP2 PUSH2 0x1F02 JUMPI INVALID JUMPDEST DIV ADD DUP2 PUSH2 0x1F0B JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x1EEB JUMP JUMPDEST POP PUSH2 0x1F23 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x1F23 JUMPI POP PUSH1 0x1 JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x1F35 SWAP1 DUP3 PUSH2 0x2093 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1F5A SWAP1 DUP3 PUSH2 0x2093 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x1FC1 JUMPI DUP2 PUSH2 0x1FC3 JUMP JUMPDEST DUP3 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1FED SWAP1 DUP3 PUSH2 0x1A77 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x2014 SWAP1 DUP3 PUSH2 0x1A77 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND PUSH1 0x1 PUSH1 0x70 SHL MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP5 AND DUP2 PUSH2 0x208B JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0xB2C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x64732D6D6174682D6164642D6F766572666C6F77 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE 0x5F TIMESTAMP SSTORE MSTORE 0x4E GASLIMIT DIFFICULTY SSTORE PUSH15 0x697377617056323A20494E53554646 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE 0x5F 0x4D 0x49 0x4E SLOAD GASLIMIT DIFFICULTY LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD6 STATICCALL 0xF 0xEF PUSH1 0xF SIGNEXTEND DUP11 0xAA LOG3 0x21 0xD5 LOG1 0x2B 0xD0 0xE2 SELFDESTRUCT DUP2 PUSH6 0x339E2E092030 DUP10 0xB4 DUP13 0x2A 0x4E PUSH12 0x4564736F6C634300060C0033 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE4 MSTORE8 BALANCE DUP11 0xD5 0xD4 0xE6 0xDA SLT PUSH15 0x43B97C2EB2E7C521BC16E9DE0BEC23 0x4C EXP SLOAD 0x25 0xD7 0xE9 DUP1 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
  "pcMap": {
    "0": {
      "offset": [
        17889,
        19564
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x80"
    },
    "2": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x40"
    },
    "4": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "5": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "CALLVALUE",
      "path": "25"
    },
    "6": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "DUP1",
      "path": "25"
    },
    "7": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "ISZERO",
      "path": "25"
    },
    "8": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x10"
    },
    "11": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "JUMPI",
      "path": "25"
    },
    "12": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x0"
    },
    "14": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "DUP1",
      "path": "25"
    },
    "15": {
      "dev": "Cannot send ether to nonpayable function",
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "REVERT",
      "path": "25"
    },
    "16": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "17": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "POP",
      "path": "25"
    },
    "18": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x4"
    },
    "20": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "CALLDATASIZE",
      "path": "25"
    },
    "21": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "LT",
      "path": "25"
    },
    "22": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x88"
    },
    "25": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "JUMPI",
      "path": "25"
    },
    "26": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x0"
    },
    "28": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "CALLDATALOAD",
      "path": "25"
    },
    "29": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0xE0"
    },
    "31": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "SHR",
      "path": "25"
    },
    "32": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "DUP1",
      "path": "25"
    },
    "33": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "PUSH4",
      "path": "25",
      "value": "0xA2E74AF6"
    },
    "38": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "GT",
      "path": "25"
    },
    "39": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x5B"
    },
    "42": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "JUMPI",
      "path": "25"
    },
    "43": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "DUP1",
      "path": "25"
    },
    "44": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "PUSH4",
      "path": "25",
      "value": "0xA2E74AF6"
    },
    "49": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "EQ",
      "path": "25"
    },
    "50": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0xF0"
    },
    "53": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "JUMPI",
      "path": "25"
    },
    "54": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "DUP1",
      "path": "25"
    },
    "55": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "PUSH4",
      "path": "25",
      "value": "0xC9C65396"
    },
    "60": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "EQ",
      "path": "25"
    },
    "61": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x118"
    },
    "64": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "JUMPI",
      "path": "25"
    },
    "65": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "DUP1",
      "path": "25"
    },
    "66": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "PUSH4",
      "path": "25",
      "value": "0xE6A43905"
    },
    "71": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "EQ",
      "path": "25"
    },
    "72": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x146"
    },
    "75": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "JUMPI",
      "path": "25"
    },
    "76": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "DUP1",
      "path": "25"
    },
    "77": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "PUSH4",
      "path": "25",
      "value": "0xF46901ED"
    },
    "82": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "EQ",
      "path": "25"
    },
    "83": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x174"
    },
    "86": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "JUMPI",
      "path": "25"
    },
    "87": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x88"
    },
    "90": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "JUMP",
      "path": "25"
    },
    "91": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "92": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "DUP1",
      "path": "25"
    },
    "93": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "PUSH4",
      "path": "25",
      "value": "0x17E7E58"
    },
    "98": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "EQ",
      "path": "25"
    },
    "99": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x8D"
    },
    "102": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "JUMPI",
      "path": "25"
    },
    "103": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "DUP1",
      "path": "25"
    },
    "104": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "PUSH4",
      "path": "25",
      "value": "0x94B7415"
    },
    "109": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "EQ",
      "path": "25"
    },
    "110": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0xB1"
    },
    "113": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "JUMPI",
      "path": "25"
    },
    "114": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "DUP1",
      "path": "25"
    },
    "115": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "PUSH4",
      "path": "25",
      "value": "0x1E3DD18B"
    },
    "120": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "EQ",
      "path": "25"
    },
    "121": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0xB9"
    },
    "124": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "JUMPI",
      "path": "25"
    },
    "125": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "DUP1",
      "path": "25"
    },
    "126": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "PUSH4",
      "path": "25",
      "value": "0x574F2BA3"
    },
    "131": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "EQ",
      "path": "25"
    },
    "132": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0xD6"
    },
    "135": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "JUMPI",
      "path": "25"
    },
    "136": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "137": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x0"
    },
    "139": {
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "DUP1",
      "path": "25"
    },
    "140": {
      "first_revert": true,
      "fn": null,
      "offset": [
        17889,
        19564
      ],
      "op": "REVERT",
      "path": "25"
    },
    "141": {
      "offset": [
        17923,
        17943
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "142": {
      "fn": null,
      "offset": [
        17923,
        17943
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x95"
    },
    "145": {
      "fn": null,
      "offset": [
        17923,
        17943
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x19A"
    },
    "148": {
      "fn": null,
      "jump": "i",
      "offset": [
        17923,
        17943
      ],
      "op": "JUMP",
      "path": "25"
    },
    "149": {
      "fn": null,
      "offset": [
        17923,
        17943
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "150": {
      "fn": null,
      "offset": [
        17923,
        17943
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x40"
    },
    "152": {
      "fn": null,
      "offset": [
        17923,
        17943
      ],
      "op": "DUP1",
      "path": "25"
    },
    "153": {
      "fn": null,
      "offset": [
        17923,
        17943
      ],
      "op": "MLOAD",
      "path": "25"
    },
    "154": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "156": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "158": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "160": {
      "op": "SHL"
    },
    "161": {
      "op": "SUB"
    },
    "162": {
      "offset": [
        17923,
        17943
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "163": {
      "fn": null,
      "offset": [
        17923,
        17943
      ],
      "op": "SWAP3",
      "path": "25"
    },
    "164": {
      "fn": null,
      "offset": [
        17923,
        17943
      ],
      "op": "AND",
      "path": "25"
    },
    "165": {
      "fn": null,
      "offset": [
        17923,
        17943
      ],
      "op": "DUP3",
      "path": "25"
    },
    "166": {
      "fn": null,
      "offset": [
        17923,
        17943
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "167": {
      "fn": null,
      "offset": [
        17923,
        17943
      ],
      "op": "MLOAD",
      "path": "25"
    },
    "168": {
      "fn": null,
      "offset": [
        17923,
        17943
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "169": {
      "fn": null,
      "offset": [
        17923,
        17943
      ],
      "op": "DUP2",
      "path": "25"
    },
    "170": {
      "fn": null,
      "offset": [
        17923,
        17943
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "171": {
      "fn": null,
      "offset": [
        17923,
        17943
      ],
      "op": "SUB",
      "path": "25"
    },
    "172": {
      "fn": null,
      "offset": [
        17923,
        17943
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x20"
    },
    "174": {
      "fn": null,
      "offset": [
        17923,
        17943
      ],
      "op": "ADD",
      "path": "25"
    },
    "175": {
      "fn": null,
      "offset": [
        17923,
        17943
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "176": {
      "fn": null,
      "offset": [
        17923,
        17943
      ],
      "op": "RETURN",
      "path": "25"
    },
    "177": {
      "offset": [
        17947,
        17973
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "178": {
      "fn": null,
      "offset": [
        17947,
        17973
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x95"
    },
    "181": {
      "fn": null,
      "offset": [
        17947,
        17973
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x1A9"
    },
    "184": {
      "fn": null,
      "jump": "i",
      "offset": [
        17947,
        17973
      ],
      "op": "JUMP",
      "path": "25"
    },
    "185": {
      "offset": [
        18044,
        18069
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "186": {
      "fn": null,
      "offset": [
        18044,
        18069
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x95"
    },
    "189": {
      "fn": null,
      "offset": [
        18044,
        18069
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x4"
    },
    "191": {
      "fn": null,
      "offset": [
        18044,
        18069
      ],
      "op": "DUP1",
      "path": "25"
    },
    "192": {
      "fn": null,
      "offset": [
        18044,
        18069
      ],
      "op": "CALLDATASIZE",
      "path": "25"
    },
    "193": {
      "fn": null,
      "offset": [
        18044,
        18069
      ],
      "op": "SUB",
      "path": "25"
    },
    "194": {
      "fn": null,
      "offset": [
        18044,
        18069
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x20"
    },
    "196": {
      "fn": null,
      "offset": [
        18044,
        18069
      ],
      "op": "DUP2",
      "path": "25"
    },
    "197": {
      "fn": null,
      "offset": [
        18044,
        18069
      ],
      "op": "LT",
      "path": "25"
    },
    "198": {
      "fn": null,
      "offset": [
        18044,
        18069
      ],
      "op": "ISZERO",
      "path": "25"
    },
    "199": {
      "fn": null,
      "offset": [
        18044,
        18069
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0xCF"
    },
    "202": {
      "fn": null,
      "offset": [
        18044,
        18069
      ],
      "op": "JUMPI",
      "path": "25"
    },
    "203": {
      "fn": null,
      "offset": [
        18044,
        18069
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x0"
    },
    "205": {
      "fn": null,
      "offset": [
        18044,
        18069
      ],
      "op": "DUP1",
      "path": "25"
    },
    "206": {
      "fn": null,
      "offset": [
        18044,
        18069
      ],
      "op": "REVERT",
      "path": "25"
    },
    "207": {
      "fn": null,
      "offset": [
        18044,
        18069
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "208": {
      "op": "POP"
    },
    "209": {
      "offset": [
        18044,
        18069
      ],
      "op": "CALLDATALOAD",
      "path": "25"
    },
    "210": {
      "fn": null,
      "offset": [
        18044,
        18069
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x1B8"
    },
    "213": {
      "fn": null,
      "jump": "i",
      "offset": [
        18044,
        18069
      ],
      "op": "JUMP",
      "path": "25"
    },
    "214": {
      "fn": "MockUniswapV2Factory.allPairsLength",
      "offset": [
        18246,
        18334
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "215": {
      "fn": "MockUniswapV2Factory.allPairsLength",
      "offset": [
        18246,
        18334
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0xDE"
    },
    "218": {
      "fn": "MockUniswapV2Factory.allPairsLength",
      "offset": [
        18246,
        18334
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x1DF"
    },
    "221": {
      "fn": "MockUniswapV2Factory.allPairsLength",
      "jump": "i",
      "offset": [
        18246,
        18334
      ],
      "op": "JUMP",
      "path": "25"
    },
    "222": {
      "fn": "MockUniswapV2Factory.allPairsLength",
      "offset": [
        18246,
        18334
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "223": {
      "fn": "MockUniswapV2Factory.allPairsLength",
      "offset": [
        18246,
        18334
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x40"
    },
    "225": {
      "fn": "MockUniswapV2Factory.allPairsLength",
      "offset": [
        18246,
        18334
      ],
      "op": "DUP1",
      "path": "25"
    },
    "226": {
      "fn": "MockUniswapV2Factory.allPairsLength",
      "offset": [
        18246,
        18334
      ],
      "op": "MLOAD",
      "path": "25"
    },
    "227": {
      "fn": "MockUniswapV2Factory.allPairsLength",
      "offset": [
        18246,
        18334
      ],
      "op": "SWAP2",
      "path": "25"
    },
    "228": {
      "fn": "MockUniswapV2Factory.allPairsLength",
      "offset": [
        18246,
        18334
      ],
      "op": "DUP3",
      "path": "25"
    },
    "229": {
      "fn": "MockUniswapV2Factory.allPairsLength",
      "offset": [
        18246,
        18334
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "230": {
      "fn": "MockUniswapV2Factory.allPairsLength",
      "offset": [
        18246,
        18334
      ],
      "op": "MLOAD",
      "path": "25"
    },
    "231": {
      "fn": "MockUniswapV2Factory.allPairsLength",
      "offset": [
        18246,
        18334
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "232": {
      "fn": "MockUniswapV2Factory.allPairsLength",
      "offset": [
        18246,
        18334
      ],
      "op": "DUP2",
      "path": "25"
    },
    "233": {
      "fn": "MockUniswapV2Factory.allPairsLength",
      "offset": [
        18246,
        18334
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "234": {
      "fn": "MockUniswapV2Factory.allPairsLength",
      "offset": [
        18246,
        18334
      ],
      "op": "SUB",
      "path": "25"
    },
    "235": {
      "fn": "MockUniswapV2Factory.allPairsLength",
      "offset": [
        18246,
        18334
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x20"
    },
    "237": {
      "fn": "MockUniswapV2Factory.allPairsLength",
      "offset": [
        18246,
        18334
      ],
      "op": "ADD",
      "path": "25"
    },
    "238": {
      "fn": "MockUniswapV2Factory.allPairsLength",
      "offset": [
        18246,
        18334
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "239": {
      "fn": "MockUniswapV2Factory.allPairsLength",
      "offset": [
        18246,
        18334
      ],
      "op": "RETURN",
      "path": "25"
    },
    "240": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19406,
        19562
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "241": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19406,
        19562
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x116"
    },
    "244": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19406,
        19562
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x4"
    },
    "246": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19406,
        19562
      ],
      "op": "DUP1",
      "path": "25"
    },
    "247": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19406,
        19562
      ],
      "op": "CALLDATASIZE",
      "path": "25"
    },
    "248": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19406,
        19562
      ],
      "op": "SUB",
      "path": "25"
    },
    "249": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19406,
        19562
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x20"
    },
    "251": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19406,
        19562
      ],
      "op": "DUP2",
      "path": "25"
    },
    "252": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19406,
        19562
      ],
      "op": "LT",
      "path": "25"
    },
    "253": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19406,
        19562
      ],
      "op": "ISZERO",
      "path": "25"
    },
    "254": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19406,
        19562
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x106"
    },
    "257": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19406,
        19562
      ],
      "op": "JUMPI",
      "path": "25"
    },
    "258": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19406,
        19562
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x0"
    },
    "260": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19406,
        19562
      ],
      "op": "DUP1",
      "path": "25"
    },
    "261": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19406,
        19562
      ],
      "op": "REVERT",
      "path": "25"
    },
    "262": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19406,
        19562
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "263": {
      "op": "POP"
    },
    "264": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19406,
        19562
      ],
      "op": "CALLDATALOAD",
      "path": "25"
    },
    "265": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "267": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "269": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "271": {
      "op": "SHL"
    },
    "272": {
      "op": "SUB"
    },
    "273": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19406,
        19562
      ],
      "op": "AND",
      "path": "25"
    },
    "274": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19406,
        19562
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x1E5"
    },
    "277": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "jump": "i",
      "offset": [
        19406,
        19562
      ],
      "op": "JUMP",
      "path": "25"
    },
    "278": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19406,
        19562
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "279": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19406,
        19562
      ],
      "op": "STOP",
      "path": "25"
    },
    "280": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "281": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x95"
    },
    "284": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x4"
    },
    "286": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "DUP1",
      "path": "25"
    },
    "287": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "CALLDATASIZE",
      "path": "25"
    },
    "288": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "SUB",
      "path": "25"
    },
    "289": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x40"
    },
    "291": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "DUP2",
      "path": "25"
    },
    "292": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "LT",
      "path": "25"
    },
    "293": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "ISZERO",
      "path": "25"
    },
    "294": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x12E"
    },
    "297": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "JUMPI",
      "path": "25"
    },
    "298": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x0"
    },
    "300": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "DUP1",
      "path": "25"
    },
    "301": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "REVERT",
      "path": "25"
    },
    "302": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "303": {
      "op": "POP"
    },
    "304": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "306": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "308": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "310": {
      "op": "SHL"
    },
    "311": {
      "op": "SUB"
    },
    "312": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "DUP2",
      "path": "25"
    },
    "313": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "CALLDATALOAD",
      "path": "25"
    },
    "314": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "DUP2",
      "path": "25"
    },
    "315": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "AND",
      "path": "25"
    },
    "316": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "SWAP2",
      "path": "25"
    },
    "317": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x20"
    },
    "319": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "ADD",
      "path": "25"
    },
    "320": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "CALLDATALOAD",
      "path": "25"
    },
    "321": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "AND",
      "path": "25"
    },
    "322": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x25D"
    },
    "325": {
      "fn": "MockUniswapV2Factory.createPair",
      "jump": "i",
      "offset": [
        18338,
        19266
      ],
      "op": "JUMP",
      "path": "25"
    },
    "326": {
      "offset": [
        17978,
        18040
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "327": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x95"
    },
    "330": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x4"
    },
    "332": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "DUP1",
      "path": "25"
    },
    "333": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "CALLDATASIZE",
      "path": "25"
    },
    "334": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "SUB",
      "path": "25"
    },
    "335": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x40"
    },
    "337": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "DUP2",
      "path": "25"
    },
    "338": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "LT",
      "path": "25"
    },
    "339": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "ISZERO",
      "path": "25"
    },
    "340": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x15C"
    },
    "343": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "JUMPI",
      "path": "25"
    },
    "344": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x0"
    },
    "346": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "DUP1",
      "path": "25"
    },
    "347": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "REVERT",
      "path": "25"
    },
    "348": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "349": {
      "op": "POP"
    },
    "350": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "352": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "354": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "356": {
      "op": "SHL"
    },
    "357": {
      "op": "SUB"
    },
    "358": {
      "offset": [
        17978,
        18040
      ],
      "op": "DUP2",
      "path": "25"
    },
    "359": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "CALLDATALOAD",
      "path": "25"
    },
    "360": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "DUP2",
      "path": "25"
    },
    "361": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "AND",
      "path": "25"
    },
    "362": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "SWAP2",
      "path": "25"
    },
    "363": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x20"
    },
    "365": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "ADD",
      "path": "25"
    },
    "366": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "CALLDATALOAD",
      "path": "25"
    },
    "367": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "AND",
      "path": "25"
    },
    "368": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x588"
    },
    "371": {
      "fn": "MockUniswapV2Factory.createPair",
      "jump": "i",
      "offset": [
        17978,
        18040
      ],
      "op": "JUMP",
      "path": "25"
    },
    "372": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19270,
        19402
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "373": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19270,
        19402
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x116"
    },
    "376": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19270,
        19402
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x4"
    },
    "378": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19270,
        19402
      ],
      "op": "DUP1",
      "path": "25"
    },
    "379": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19270,
        19402
      ],
      "op": "CALLDATASIZE",
      "path": "25"
    },
    "380": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19270,
        19402
      ],
      "op": "SUB",
      "path": "25"
    },
    "381": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19270,
        19402
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x20"
    },
    "383": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19270,
        19402
      ],
      "op": "DUP2",
      "path": "25"
    },
    "384": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19270,
        19402
      ],
      "op": "LT",
      "path": "25"
    },
    "385": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19270,
        19402
      ],
      "op": "ISZERO",
      "path": "25"
    },
    "386": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19270,
        19402
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x18A"
    },
    "389": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19270,
        19402
      ],
      "op": "JUMPI",
      "path": "25"
    },
    "390": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19270,
        19402
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x0"
    },
    "392": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19270,
        19402
      ],
      "op": "DUP1",
      "path": "25"
    },
    "393": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19270,
        19402
      ],
      "op": "REVERT",
      "path": "25"
    },
    "394": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19270,
        19402
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "395": {
      "op": "POP"
    },
    "396": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19270,
        19402
      ],
      "op": "CALLDATALOAD",
      "path": "25"
    },
    "397": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "399": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "401": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "403": {
      "op": "SHL"
    },
    "404": {
      "op": "SUB"
    },
    "405": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19270,
        19402
      ],
      "op": "AND",
      "path": "25"
    },
    "406": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19270,
        19402
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x5AE"
    },
    "409": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "jump": "i",
      "offset": [
        19270,
        19402
      ],
      "op": "JUMP",
      "path": "25"
    },
    "410": {
      "offset": [
        17923,
        17943
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "411": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        17923,
        17943
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x0"
    },
    "413": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        17923,
        17943
      ],
      "op": "SLOAD",
      "path": "25"
    },
    "414": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "416": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "418": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "420": {
      "op": "SHL"
    },
    "421": {
      "op": "SUB"
    },
    "422": {
      "offset": [
        17923,
        17943
      ],
      "op": "AND",
      "path": "25"
    },
    "423": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        17923,
        17943
      ],
      "op": "DUP2",
      "path": "25"
    },
    "424": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "jump": "o",
      "offset": [
        17923,
        17943
      ],
      "op": "JUMP",
      "path": "25"
    },
    "425": {
      "offset": [
        17947,
        17973
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "426": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        17947,
        17973
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x1"
    },
    "428": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        17947,
        17973
      ],
      "op": "SLOAD",
      "path": "25"
    },
    "429": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "431": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "433": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "435": {
      "op": "SHL"
    },
    "436": {
      "op": "SUB"
    },
    "437": {
      "offset": [
        17947,
        17973
      ],
      "op": "AND",
      "path": "25"
    },
    "438": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        17947,
        17973
      ],
      "op": "DUP2",
      "path": "25"
    },
    "439": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "jump": "o",
      "offset": [
        17947,
        17973
      ],
      "op": "JUMP",
      "path": "25"
    },
    "440": {
      "offset": [
        18044,
        18069
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "441": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        18044,
        18069
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x3"
    },
    "443": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        18044,
        18069
      ],
      "op": "DUP2",
      "path": "25"
    },
    "444": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        18044,
        18069
      ],
      "op": "DUP2",
      "path": "25"
    },
    "445": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        18044,
        18069
      ],
      "op": "SLOAD",
      "path": "25"
    },
    "446": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        18044,
        18069
      ],
      "op": "DUP2",
      "path": "25"
    },
    "447": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        18044,
        18069
      ],
      "op": "LT",
      "path": "25"
    },
    "448": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        18044,
        18069
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x1C5"
    },
    "451": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        18044,
        18069
      ],
      "op": "JUMPI",
      "path": "25"
    },
    "452": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        18044,
        18069
      ],
      "op": "INVALID",
      "path": "25"
    },
    "453": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        18044,
        18069
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "454": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        18044,
        18069
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x0"
    },
    "456": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        18044,
        18069
      ],
      "op": "SWAP2",
      "path": "25"
    },
    "457": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        18044,
        18069
      ],
      "op": "DUP3",
      "path": "25"
    },
    "458": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        18044,
        18069
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "459": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        18044,
        18069
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x20"
    },
    "461": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        18044,
        18069
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "462": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        18044,
        18069
      ],
      "op": "SWAP2",
      "path": "25"
    },
    "463": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        18044,
        18069
      ],
      "op": "KECCAK256",
      "path": "25"
    },
    "464": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        18044,
        18069
      ],
      "op": "ADD",
      "path": "25"
    },
    "465": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        18044,
        18069
      ],
      "op": "SLOAD",
      "path": "25"
    },
    "466": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "468": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "470": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "472": {
      "op": "SHL"
    },
    "473": {
      "op": "SUB"
    },
    "474": {
      "offset": [
        18044,
        18069
      ],
      "op": "AND",
      "path": "25"
    },
    "475": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        18044,
        18069
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "476": {
      "op": "POP"
    },
    "477": {
      "offset": [
        18044,
        18069
      ],
      "op": "DUP2",
      "path": "25"
    },
    "478": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "jump": "o",
      "offset": [
        18044,
        18069
      ],
      "op": "JUMP",
      "path": "25"
    },
    "479": {
      "fn": "MockUniswapV2Factory.allPairsLength",
      "offset": [
        18246,
        18334
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "480": {
      "fn": "MockUniswapV2Factory.allPairsLength",
      "offset": [
        18314,
        18322
      ],
      "op": "PUSH1",
      "path": "25",
      "statement": 0,
      "value": "0x3"
    },
    "482": {
      "fn": "MockUniswapV2Factory.allPairsLength",
      "offset": [
        18314,
        18329
      ],
      "op": "SLOAD",
      "path": "25"
    },
    "483": {
      "fn": "MockUniswapV2Factory.allPairsLength",
      "offset": [
        18246,
        18334
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "484": {
      "fn": "MockUniswapV2Factory.allPairsLength",
      "jump": "o",
      "offset": [
        18246,
        18334
      ],
      "op": "JUMP",
      "path": "25"
    },
    "485": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19406,
        19562
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "486": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19489,
        19500
      ],
      "op": "PUSH1",
      "path": "25",
      "statement": 1,
      "value": "0x1"
    },
    "488": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19489,
        19500
      ],
      "op": "SLOAD",
      "path": "25"
    },
    "489": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "491": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "493": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "495": {
      "op": "SHL"
    },
    "496": {
      "op": "SUB"
    },
    "497": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19489,
        19500
      ],
      "op": "AND",
      "path": "25"
    },
    "498": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19475,
        19485
      ],
      "op": "CALLER",
      "path": "25"
    },
    "499": {
      "branch": 13,
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19475,
        19500
      ],
      "op": "EQ",
      "path": "25"
    },
    "500": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19467,
        19525
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x23B"
    },
    "503": {
      "branch": 13,
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19467,
        19525
      ],
      "op": "JUMPI",
      "path": "25"
    },
    "504": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19467,
        19525
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x40"
    },
    "506": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19467,
        19525
      ],
      "op": "DUP1",
      "path": "25"
    },
    "507": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19467,
        19525
      ],
      "op": "MLOAD",
      "path": "25"
    },
    "508": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "512": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "514": {
      "op": "SHL"
    },
    "515": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19467,
        19525
      ],
      "op": "DUP2",
      "path": "25"
    },
    "516": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19467,
        19525
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "517": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19467,
        19525
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x20"
    },
    "519": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19467,
        19525
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x4"
    },
    "521": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19467,
        19525
      ],
      "op": "DUP3",
      "path": "25"
    },
    "522": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19467,
        19525
      ],
      "op": "ADD",
      "path": "25"
    },
    "523": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19467,
        19525
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "524": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19467,
        19525
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x14"
    },
    "526": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19467,
        19525
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x24"
    },
    "528": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19467,
        19525
      ],
      "op": "DUP3",
      "path": "25"
    },
    "529": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19467,
        19525
      ],
      "op": "ADD",
      "path": "25"
    },
    "530": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19467,
        19525
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "531": {
      "op": "PUSH20",
      "value": "0x2AB734B9BBB0B82B191D102327A92124A22222A7"
    },
    "552": {
      "op": "PUSH1",
      "value": "0x61"
    },
    "554": {
      "op": "SHL"
    },
    "555": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19467,
        19525
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x44"
    },
    "557": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19467,
        19525
      ],
      "op": "DUP3",
      "path": "25"
    },
    "558": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19467,
        19525
      ],
      "op": "ADD",
      "path": "25"
    },
    "559": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19467,
        19525
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "560": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19467,
        19525
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "561": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19467,
        19525
      ],
      "op": "MLOAD",
      "path": "25"
    },
    "562": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19467,
        19525
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "563": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19467,
        19525
      ],
      "op": "DUP2",
      "path": "25"
    },
    "564": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19467,
        19525
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "565": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19467,
        19525
      ],
      "op": "SUB",
      "path": "25"
    },
    "566": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19467,
        19525
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x64"
    },
    "568": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19467,
        19525
      ],
      "op": "ADD",
      "path": "25"
    },
    "569": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19467,
        19525
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "570": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19467,
        19525
      ],
      "op": "REVERT",
      "path": "25"
    },
    "571": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19467,
        19525
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "572": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19531,
        19542
      ],
      "op": "PUSH1",
      "path": "25",
      "statement": 2,
      "value": "0x1"
    },
    "574": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19531,
        19557
      ],
      "op": "DUP1",
      "path": "25"
    },
    "575": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19531,
        19557
      ],
      "op": "SLOAD",
      "path": "25"
    },
    "576": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "578": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "580": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "582": {
      "op": "SHL"
    },
    "583": {
      "op": "SUB"
    },
    "584": {
      "op": "NOT"
    },
    "585": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19531,
        19557
      ],
      "op": "AND",
      "path": "25"
    },
    "586": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "588": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "590": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "592": {
      "op": "SHL"
    },
    "593": {
      "op": "SUB"
    },
    "594": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19531,
        19557
      ],
      "op": "SWAP3",
      "path": "25"
    },
    "595": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19531,
        19557
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "596": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19531,
        19557
      ],
      "op": "SWAP3",
      "path": "25"
    },
    "597": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19531,
        19557
      ],
      "op": "AND",
      "path": "25"
    },
    "598": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19531,
        19557
      ],
      "op": "SWAP2",
      "path": "25"
    },
    "599": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19531,
        19557
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "600": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19531,
        19557
      ],
      "op": "SWAP2",
      "path": "25"
    },
    "601": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19531,
        19557
      ],
      "op": "OR",
      "path": "25"
    },
    "602": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19531,
        19557
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "603": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "offset": [
        19531,
        19557
      ],
      "op": "SSTORE",
      "path": "25"
    },
    "604": {
      "fn": "MockUniswapV2Factory.setFeeToSetter",
      "jump": "o",
      "offset": [
        19406,
        19562
      ],
      "op": "JUMP",
      "path": "25"
    },
    "605": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "606": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18408,
        18420
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x0"
    },
    "608": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18446,
        18452
      ],
      "op": "DUP2",
      "path": "25",
      "statement": 3
    },
    "609": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "611": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "613": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "615": {
      "op": "SHL"
    },
    "616": {
      "op": "SUB"
    },
    "617": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18436,
        18452
      ],
      "op": "AND",
      "path": "25"
    },
    "618": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18436,
        18442
      ],
      "op": "DUP4",
      "path": "25"
    },
    "619": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "621": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "623": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "625": {
      "op": "SHL"
    },
    "626": {
      "op": "SUB"
    },
    "627": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18436,
        18452
      ],
      "op": "AND",
      "path": "25"
    },
    "628": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18436,
        18452
      ],
      "op": "EQ",
      "path": "25"
    },
    "629": {
      "branch": 14,
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18436,
        18452
      ],
      "op": "ISZERO",
      "path": "25"
    },
    "630": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x2C6"
    },
    "633": {
      "branch": 14,
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "JUMPI",
      "path": "25"
    },
    "634": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x40"
    },
    "636": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "DUP1",
      "path": "25"
    },
    "637": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "MLOAD",
      "path": "25"
    },
    "638": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "642": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "644": {
      "op": "SHL"
    },
    "645": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "DUP2",
      "path": "25"
    },
    "646": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "647": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x20"
    },
    "649": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x4"
    },
    "651": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "DUP3",
      "path": "25"
    },
    "652": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "ADD",
      "path": "25"
    },
    "653": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "654": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x1E"
    },
    "656": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x24"
    },
    "658": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "DUP3",
      "path": "25"
    },
    "659": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "ADD",
      "path": "25"
    },
    "660": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "661": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "PUSH32",
      "path": "25",
      "value": "0x556E697377617056323A204944454E544943414C5F4144445245535345530000"
    },
    "694": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x44"
    },
    "696": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "DUP3",
      "path": "25"
    },
    "697": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "ADD",
      "path": "25"
    },
    "698": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "699": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "700": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "MLOAD",
      "path": "25"
    },
    "701": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "702": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "DUP2",
      "path": "25"
    },
    "703": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "704": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "SUB",
      "path": "25"
    },
    "705": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x64"
    },
    "707": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "ADD",
      "path": "25"
    },
    "708": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "709": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "REVERT",
      "path": "25"
    },
    "710": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18428,
        18487
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "711": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18494,
        18508
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x0"
    },
    "713": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18510,
        18524
      ],
      "op": "DUP1",
      "path": "25"
    },
    "714": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18537,
        18543
      ],
      "op": "DUP4",
      "path": "25"
    },
    "715": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "717": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "719": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "721": {
      "op": "SHL"
    },
    "722": {
      "op": "SUB"
    },
    "723": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18528,
        18543
      ],
      "op": "AND",
      "path": "25"
    },
    "724": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18528,
        18534
      ],
      "op": "DUP6",
      "path": "25"
    },
    "725": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "727": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "729": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "731": {
      "op": "SHL"
    },
    "732": {
      "op": "SUB"
    },
    "733": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18528,
        18543
      ],
      "op": "AND",
      "path": "25"
    },
    "734": {
      "branch": 15,
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18528,
        18543
      ],
      "op": "LT",
      "path": "25"
    },
    "735": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18528,
        18581
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x2E9"
    },
    "738": {
      "branch": 15,
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18528,
        18581
      ],
      "op": "JUMPI",
      "path": "25"
    },
    "739": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18566,
        18572
      ],
      "op": "DUP4",
      "path": "25"
    },
    "740": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18574,
        18580
      ],
      "op": "DUP6",
      "path": "25"
    },
    "741": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18528,
        18581
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x2EC"
    },
    "744": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18528,
        18581
      ],
      "op": "JUMP",
      "path": "25"
    },
    "745": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18528,
        18581
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "746": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18547,
        18553
      ],
      "op": "DUP5",
      "path": "25"
    },
    "747": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18555,
        18561
      ],
      "op": "DUP5",
      "path": "25"
    },
    "748": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18528,
        18581
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "749": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18493,
        18581
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "750": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18493,
        18581
      ],
      "op": "SWAP3",
      "path": "25"
    },
    "751": {
      "op": "POP"
    },
    "752": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18493,
        18581
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "753": {
      "op": "POP"
    },
    "754": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "756": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "758": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "760": {
      "op": "SHL"
    },
    "761": {
      "op": "SUB"
    },
    "762": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18595,
        18615
      ],
      "op": "DUP3",
      "path": "25",
      "statement": 4
    },
    "763": {
      "branch": 16,
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18595,
        18615
      ],
      "op": "AND",
      "path": "25"
    },
    "764": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x34C"
    },
    "767": {
      "branch": 16,
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "JUMPI",
      "path": "25"
    },
    "768": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x40"
    },
    "770": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "DUP1",
      "path": "25"
    },
    "771": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "MLOAD",
      "path": "25"
    },
    "772": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "776": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "778": {
      "op": "SHL"
    },
    "779": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "DUP2",
      "path": "25"
    },
    "780": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "781": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x20"
    },
    "783": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x4"
    },
    "785": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "DUP3",
      "path": "25"
    },
    "786": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "ADD",
      "path": "25"
    },
    "787": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "788": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x17"
    },
    "790": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x24"
    },
    "792": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "DUP3",
      "path": "25"
    },
    "793": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "ADD",
      "path": "25"
    },
    "794": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "795": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "PUSH32",
      "path": "25",
      "value": "0x556E697377617056323A205A45524F5F41444452455353000000000000000000"
    },
    "828": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x44"
    },
    "830": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "DUP3",
      "path": "25"
    },
    "831": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "ADD",
      "path": "25"
    },
    "832": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "833": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "834": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "MLOAD",
      "path": "25"
    },
    "835": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "836": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "DUP2",
      "path": "25"
    },
    "837": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "838": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "SUB",
      "path": "25"
    },
    "839": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x64"
    },
    "841": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "ADD",
      "path": "25"
    },
    "842": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "843": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "REVERT",
      "path": "25"
    },
    "844": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18587,
        18643
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "845": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "847": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "849": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "851": {
      "op": "SHL"
    },
    "852": {
      "op": "SUB"
    },
    "853": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18657,
        18672
      ],
      "op": "DUP3",
      "path": "25",
      "statement": 5
    },
    "854": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18657,
        18672
      ],
      "op": "DUP2",
      "path": "25"
    },
    "855": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18657,
        18672
      ],
      "op": "AND",
      "path": "25"
    },
    "856": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18692,
        18693
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x0"
    },
    "858": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18657,
        18672
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "859": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18657,
        18672
      ],
      "op": "DUP2",
      "path": "25"
    },
    "860": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18657,
        18672
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "861": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18657,
        18664
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x2"
    },
    "863": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18657,
        18672
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x20"
    },
    "865": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18657,
        18672
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "866": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18657,
        18672
      ],
      "op": "DUP2",
      "path": "25"
    },
    "867": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18657,
        18672
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "868": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18657,
        18672
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x40"
    },
    "870": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18657,
        18672
      ],
      "op": "DUP1",
      "path": "25"
    },
    "871": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18657,
        18672
      ],
      "op": "DUP4",
      "path": "25"
    },
    "872": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18657,
        18672
      ],
      "op": "KECCAK256",
      "path": "25"
    },
    "873": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18657,
        18680
      ],
      "op": "DUP6",
      "path": "25"
    },
    "874": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18657,
        18680
      ],
      "op": "DUP6",
      "path": "25"
    },
    "875": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18657,
        18680
      ],
      "op": "AND",
      "path": "25"
    },
    "876": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18657,
        18680
      ],
      "op": "DUP5",
      "path": "25"
    },
    "877": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18657,
        18680
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "878": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18657,
        18680
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "879": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18657,
        18680
      ],
      "op": "SWAP2",
      "path": "25"
    },
    "880": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18657,
        18680
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "881": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18657,
        18680
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "882": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18657,
        18680
      ],
      "op": "KECCAK256",
      "path": "25"
    },
    "883": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18657,
        18680
      ],
      "op": "SLOAD",
      "path": "25"
    },
    "884": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18657,
        18680
      ],
      "op": "AND",
      "path": "25"
    },
    "885": {
      "branch": 17,
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18657,
        18694
      ],
      "op": "ISZERO",
      "path": "25"
    },
    "886": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18649,
        18721
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x3BF"
    },
    "889": {
      "branch": 17,
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18649,
        18721
      ],
      "op": "JUMPI",
      "path": "25"
    },
    "890": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18649,
        18721
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x40"
    },
    "892": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18649,
        18721
      ],
      "op": "DUP1",
      "path": "25"
    },
    "893": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18649,
        18721
      ],
      "op": "MLOAD",
      "path": "25"
    },
    "894": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "898": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "900": {
      "op": "SHL"
    },
    "901": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18649,
        18721
      ],
      "op": "DUP2",
      "path": "25"
    },
    "902": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18649,
        18721
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "903": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18649,
        18721
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x20"
    },
    "905": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18649,
        18721
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x4"
    },
    "907": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18649,
        18721
      ],
      "op": "DUP3",
      "path": "25"
    },
    "908": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18649,
        18721
      ],
      "op": "ADD",
      "path": "25"
    },
    "909": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18649,
        18721
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "910": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18649,
        18721
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x16"
    },
    "912": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18649,
        18721
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x24"
    },
    "914": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18649,
        18721
      ],
      "op": "DUP3",
      "path": "25"
    },
    "915": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18649,
        18721
      ],
      "op": "ADD",
      "path": "25"
    },
    "916": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18649,
        18721
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "917": {
      "op": "PUSH22",
      "value": "0x556E697377617056323A20504149525F455849535453"
    },
    "940": {
      "op": "PUSH1",
      "value": "0x50"
    },
    "942": {
      "op": "SHL"
    },
    "943": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18649,
        18721
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x44"
    },
    "945": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18649,
        18721
      ],
      "op": "DUP3",
      "path": "25"
    },
    "946": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18649,
        18721
      ],
      "op": "ADD",
      "path": "25"
    },
    "947": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18649,
        18721
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "948": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18649,
        18721
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "949": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18649,
        18721
      ],
      "op": "MLOAD",
      "path": "25"
    },
    "950": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18649,
        18721
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "951": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18649,
        18721
      ],
      "op": "DUP2",
      "path": "25"
    },
    "952": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18649,
        18721
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "953": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18649,
        18721
      ],
      "op": "SUB",
      "path": "25"
    },
    "954": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18649,
        18721
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x64"
    },
    "956": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18649,
        18721
      ],
      "op": "ADD",
      "path": "25"
    },
    "957": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18649,
        18721
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "958": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18649,
        18721
      ],
      "op": "REVERT",
      "path": "25"
    },
    "959": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18649,
        18721
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "960": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18757,
        18778
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x60"
    },
    "962": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18781,
        18833
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x40"
    },
    "964": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18781,
        18833
      ],
      "op": "MLOAD",
      "path": "25"
    },
    "965": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18781,
        18833
      ],
      "op": "DUP1",
      "path": "25"
    },
    "966": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18781,
        18833
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x20"
    },
    "968": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18781,
        18833
      ],
      "op": "ADD",
      "path": "25"
    },
    "969": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18781,
        18833
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x3D1"
    },
    "972": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18781,
        18833
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "973": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18781,
        18833
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x626"
    },
    "976": {
      "fn": "MockUniswapV2Factory.createPair",
      "jump": "i",
      "offset": [
        18781,
        18833
      ],
      "op": "JUMP",
      "path": "25"
    },
    "977": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18781,
        18833
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "978": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18781,
        18833
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x20"
    },
    "980": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18781,
        18833
      ],
      "op": "DUP3",
      "path": "25"
    },
    "981": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18781,
        18833
      ],
      "op": "ADD",
      "path": "25"
    },
    "982": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18781,
        18833
      ],
      "op": "DUP2",
      "path": "25"
    },
    "983": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18781,
        18833
      ],
      "op": "SUB",
      "path": "25"
    },
    "984": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18781,
        18833
      ],
      "op": "DUP3",
      "path": "25"
    },
    "985": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18781,
        18833
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "986": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18781,
        18833
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x1F"
    },
    "988": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18781,
        18833
      ],
      "op": "NOT",
      "path": "25"
    },
    "989": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18781,
        18833
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x1F"
    },
    "991": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18781,
        18833
      ],
      "op": "DUP3",
      "path": "25"
    },
    "992": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18781,
        18833
      ],
      "op": "ADD",
      "path": "25"
    },
    "993": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18781,
        18833
      ],
      "op": "AND",
      "path": "25"
    },
    "994": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18781,
        18833
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x40"
    },
    "996": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18781,
        18833
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "997": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18781,
        18833
      ],
      "op": "POP",
      "path": "25"
    },
    "998": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18757,
        18833
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "999": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18757,
        18833
      ],
      "op": "POP",
      "path": "25"
    },
    "1000": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18839,
        18851
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x0"
    },
    "1002": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18881,
        18887
      ],
      "op": "DUP4",
      "path": "25"
    },
    "1003": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18889,
        18895
      ],
      "op": "DUP4",
      "path": "25"
    },
    "1004": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x40"
    },
    "1006": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "MLOAD",
      "path": "25"
    },
    "1007": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x20"
    },
    "1009": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "ADD",
      "path": "25"
    },
    "1010": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "DUP1",
      "path": "25"
    },
    "1011": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "DUP4",
      "path": "25"
    },
    "1012": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1014": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1016": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1018": {
      "op": "SHL"
    },
    "1019": {
      "op": "SUB"
    },
    "1020": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "AND",
      "path": "25"
    },
    "1021": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x60"
    },
    "1023": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "SHL",
      "path": "25"
    },
    "1024": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "DUP2",
      "path": "25"
    },
    "1025": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "1026": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x14"
    },
    "1028": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "ADD",
      "path": "25"
    },
    "1029": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "DUP3",
      "path": "25"
    },
    "1030": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1032": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1034": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1036": {
      "op": "SHL"
    },
    "1037": {
      "op": "SUB"
    },
    "1038": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "AND",
      "path": "25"
    },
    "1039": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x60"
    },
    "1041": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "SHL",
      "path": "25"
    },
    "1042": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "DUP2",
      "path": "25"
    },
    "1043": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "1044": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x14"
    },
    "1046": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "ADD",
      "path": "25"
    },
    "1047": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "SWAP3",
      "path": "25"
    },
    "1048": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "POP",
      "path": "25"
    },
    "1049": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "POP",
      "path": "25"
    },
    "1050": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "POP",
      "path": "25"
    },
    "1051": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x40"
    },
    "1053": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "MLOAD",
      "path": "25"
    },
    "1054": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x20"
    },
    "1056": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "DUP2",
      "path": "25"
    },
    "1057": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "DUP4",
      "path": "25"
    },
    "1058": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "SUB",
      "path": "25"
    },
    "1059": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "SUB",
      "path": "25"
    },
    "1060": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "DUP2",
      "path": "25"
    },
    "1061": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "1062": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "1063": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x40"
    },
    "1065": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18864,
        18896
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "1066": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18854,
        18897
      ],
      "op": "DUP1",
      "path": "25"
    },
    "1067": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18854,
        18897
      ],
      "op": "MLOAD",
      "path": "25"
    },
    "1068": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18854,
        18897
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "1069": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18854,
        18897
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x20"
    },
    "1071": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18854,
        18897
      ],
      "op": "ADD",
      "path": "25"
    },
    "1072": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18854,
        18897
      ],
      "op": "KECCAK256",
      "path": "25"
    },
    "1073": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18839,
        18897
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "1074": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18839,
        18897
      ],
      "op": "POP",
      "path": "25"
    },
    "1075": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18975,
        18979
      ],
      "op": "DUP1",
      "path": "25"
    },
    "1076": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18964,
        18972
      ],
      "op": "DUP3",
      "path": "25"
    },
    "1077": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18958,
        18973
      ],
      "op": "MLOAD",
      "path": "25"
    },
    "1078": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18953,
        18955
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x20"
    },
    "1080": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18943,
        18951
      ],
      "op": "DUP5",
      "path": "25"
    },
    "1081": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18939,
        18956
      ],
      "op": "ADD",
      "path": "25"
    },
    "1082": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18936,
        18937
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x0"
    },
    "1084": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18928,
        18980
      ],
      "op": "CREATE2",
      "path": "25"
    },
    "1085": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18920,
        18980
      ],
      "op": "SWAP5",
      "path": "25"
    },
    "1086": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18920,
        18980
      ],
      "op": "POP",
      "path": "25"
    },
    "1087": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19026,
        19030
      ],
      "op": "DUP5",
      "path": "25",
      "statement": 6
    },
    "1088": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1090": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1092": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1094": {
      "op": "SHL"
    },
    "1095": {
      "op": "SUB"
    },
    "1096": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19042
      ],
      "op": "AND",
      "path": "25"
    },
    "1097": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19042
      ],
      "op": "PUSH4",
      "path": "25",
      "value": "0x485CC955"
    },
    "1102": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19043,
        19049
      ],
      "op": "DUP6",
      "path": "25"
    },
    "1103": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19051,
        19057
      ],
      "op": "DUP6",
      "path": "25"
    },
    "1104": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x40"
    },
    "1106": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "MLOAD",
      "path": "25"
    },
    "1107": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "DUP4",
      "path": "25"
    },
    "1108": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "PUSH4",
      "path": "25",
      "value": "0xFFFFFFFF"
    },
    "1113": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "AND",
      "path": "25"
    },
    "1114": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0xE0"
    },
    "1116": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "SHL",
      "path": "25"
    },
    "1117": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "DUP2",
      "path": "25"
    },
    "1118": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "1119": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x4"
    },
    "1121": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "ADD",
      "path": "25"
    },
    "1122": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "DUP1",
      "path": "25"
    },
    "1123": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "DUP4",
      "path": "25"
    },
    "1124": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1126": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1128": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1130": {
      "op": "SHL"
    },
    "1131": {
      "op": "SUB"
    },
    "1132": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "AND",
      "path": "25"
    },
    "1133": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "DUP2",
      "path": "25"
    },
    "1134": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "1135": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x20"
    },
    "1137": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "ADD",
      "path": "25"
    },
    "1138": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "DUP3",
      "path": "25"
    },
    "1139": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1141": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1143": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1145": {
      "op": "SHL"
    },
    "1146": {
      "op": "SUB"
    },
    "1147": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "AND",
      "path": "25"
    },
    "1148": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "DUP2",
      "path": "25"
    },
    "1149": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "1150": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x20"
    },
    "1152": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "ADD",
      "path": "25"
    },
    "1153": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "SWAP3",
      "path": "25"
    },
    "1154": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "POP",
      "path": "25"
    },
    "1155": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "POP",
      "path": "25"
    },
    "1156": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "POP",
      "path": "25"
    },
    "1157": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x0"
    },
    "1159": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x40"
    },
    "1161": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "MLOAD",
      "path": "25"
    },
    "1162": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "DUP1",
      "path": "25"
    },
    "1163": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "DUP4",
      "path": "25"
    },
    "1164": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "SUB",
      "path": "25"
    },
    "1165": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "DUP2",
      "path": "25"
    },
    "1166": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x0"
    },
    "1168": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "DUP8",
      "path": "25"
    },
    "1169": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "DUP1",
      "path": "25"
    },
    "1170": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "EXTCODESIZE",
      "path": "25"
    },
    "1171": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "ISZERO",
      "path": "25"
    },
    "1172": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "DUP1",
      "path": "25"
    },
    "1173": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "ISZERO",
      "path": "25"
    },
    "1174": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x49E"
    },
    "1177": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "JUMPI",
      "path": "25"
    },
    "1178": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x0"
    },
    "1180": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "DUP1",
      "path": "25"
    },
    "1181": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "REVERT",
      "path": "25"
    },
    "1182": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "1183": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "POP",
      "path": "25"
    },
    "1184": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "GAS",
      "path": "25"
    },
    "1185": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "CALL",
      "path": "25"
    },
    "1186": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "ISZERO",
      "path": "25"
    },
    "1187": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "DUP1",
      "path": "25"
    },
    "1188": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "ISZERO",
      "path": "25"
    },
    "1189": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x4B2"
    },
    "1192": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "JUMPI",
      "path": "25"
    },
    "1193": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "RETURNDATASIZE",
      "path": "25"
    },
    "1194": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x0"
    },
    "1196": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "DUP1",
      "path": "25"
    },
    "1197": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "RETURNDATACOPY",
      "path": "25"
    },
    "1198": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "RETURNDATASIZE",
      "path": "25"
    },
    "1199": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x0"
    },
    "1201": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "REVERT",
      "path": "25"
    },
    "1202": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18991,
        19058
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "1203": {
      "op": "POP"
    },
    "1204": {
      "op": "POP"
    },
    "1205": {
      "op": "POP"
    },
    "1206": {
      "op": "POP"
    },
    "1207": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1209": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1211": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1213": {
      "op": "SHL"
    },
    "1214": {
      "op": "SUB"
    },
    "1215": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19079
      ],
      "op": "DUP5",
      "path": "25",
      "statement": 7
    },
    "1216": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19079
      ],
      "op": "DUP2",
      "path": "25"
    },
    "1217": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19079
      ],
      "op": "AND",
      "path": "25"
    },
    "1218": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19079
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x0"
    },
    "1220": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19079
      ],
      "op": "DUP2",
      "path": "25"
    },
    "1221": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19079
      ],
      "op": "DUP2",
      "path": "25"
    },
    "1222": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19079
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "1223": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19071
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x2"
    },
    "1225": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19079
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x20"
    },
    "1227": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19079
      ],
      "op": "DUP2",
      "path": "25"
    },
    "1228": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19079
      ],
      "op": "DUP2",
      "path": "25"
    },
    "1229": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19079
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "1230": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19079
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x40"
    },
    "1232": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19079
      ],
      "op": "DUP1",
      "path": "25"
    },
    "1233": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19079
      ],
      "op": "DUP5",
      "path": "25"
    },
    "1234": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19079
      ],
      "op": "KECCAK256",
      "path": "25"
    },
    "1235": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19087
      ],
      "op": "DUP10",
      "path": "25"
    },
    "1236": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19087
      ],
      "op": "DUP8",
      "path": "25"
    },
    "1237": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19087
      ],
      "op": "AND",
      "path": "25"
    },
    "1238": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19087
      ],
      "op": "DUP1",
      "path": "25"
    },
    "1239": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19087
      ],
      "op": "DUP7",
      "path": "25"
    },
    "1240": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19087
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "1241": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19087
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "1242": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19087
      ],
      "op": "DUP4",
      "path": "25"
    },
    "1243": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19087
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "1244": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19087
      ],
      "op": "DUP2",
      "path": "25"
    },
    "1245": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19087
      ],
      "op": "DUP6",
      "path": "25"
    },
    "1246": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19087
      ],
      "op": "KECCAK256",
      "path": "25"
    },
    "1247": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19094
      ],
      "op": "DUP1",
      "path": "25"
    },
    "1248": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19094
      ],
      "op": "SLOAD",
      "path": "25"
    },
    "1249": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19094
      ],
      "op": "SWAP8",
      "path": "25"
    },
    "1250": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19094
      ],
      "op": "DUP14",
      "path": "25"
    },
    "1251": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19094
      ],
      "op": "AND",
      "path": "25"
    },
    "1252": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1254": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1256": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1258": {
      "op": "SHL"
    },
    "1259": {
      "op": "SUB"
    },
    "1260": {
      "op": "NOT"
    },
    "1261": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19094
      ],
      "op": "SWAP9",
      "path": "25"
    },
    "1262": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19094
      ],
      "op": "DUP10",
      "path": "25"
    },
    "1263": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19094
      ],
      "op": "AND",
      "path": "25"
    },
    "1264": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19094
      ],
      "op": "DUP2",
      "path": "25"
    },
    "1265": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19094
      ],
      "op": "OR",
      "path": "25"
    },
    "1266": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19094
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "1267": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19094
      ],
      "op": "SWAP2",
      "path": "25"
    },
    "1268": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19064,
        19094
      ],
      "op": "SSTORE",
      "path": "25"
    },
    "1269": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19100,
        19115
      ],
      "op": "SWAP4",
      "path": "25",
      "statement": 8
    },
    "1270": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19100,
        19115
      ],
      "op": "DUP4",
      "path": "25"
    },
    "1271": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19100,
        19115
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "1272": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19100,
        19115
      ],
      "op": "DUP2",
      "path": "25"
    },
    "1273": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19100,
        19115
      ],
      "op": "DUP6",
      "path": "25"
    },
    "1274": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19100,
        19115
      ],
      "op": "KECCAK256",
      "path": "25"
    },
    "1275": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19100,
        19123
      ],
      "op": "DUP7",
      "path": "25"
    },
    "1276": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19100,
        19123
      ],
      "op": "DUP7",
      "path": "25"
    },
    "1277": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19100,
        19123
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "1278": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19100,
        19123
      ],
      "op": "DUP4",
      "path": "25"
    },
    "1279": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19100,
        19123
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "1280": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19100,
        19123
      ],
      "op": "DUP2",
      "path": "25"
    },
    "1281": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19100,
        19123
      ],
      "op": "DUP6",
      "path": "25"
    },
    "1282": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19100,
        19123
      ],
      "op": "KECCAK256",
      "path": "25"
    },
    "1283": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19100,
        19130
      ],
      "op": "DUP1",
      "path": "25"
    },
    "1284": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19100,
        19130
      ],
      "op": "SLOAD",
      "path": "25"
    },
    "1285": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19100,
        19130
      ],
      "op": "DUP9",
      "path": "25"
    },
    "1286": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19100,
        19130
      ],
      "op": "AND",
      "path": "25"
    },
    "1287": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19100,
        19130
      ],
      "op": "DUP6",
      "path": "25"
    },
    "1288": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19100,
        19130
      ],
      "op": "OR",
      "path": "25"
    },
    "1289": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19100,
        19130
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "1290": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19100,
        19130
      ],
      "op": "SSTORE",
      "path": "25"
    },
    "1291": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19181,
        19189
      ],
      "op": "PUSH1",
      "path": "25",
      "statement": 9,
      "value": "0x3"
    },
    "1293": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19181,
        19200
      ],
      "op": "DUP1",
      "path": "25"
    },
    "1294": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19181,
        19200
      ],
      "op": "SLOAD",
      "path": "25"
    },
    "1295": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1297": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19181,
        19200
      ],
      "op": "DUP2",
      "path": "25"
    },
    "1298": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19181,
        19200
      ],
      "op": "ADD",
      "path": "25"
    },
    "1299": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19181,
        19200
      ],
      "op": "DUP3",
      "path": "25"
    },
    "1300": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19181,
        19200
      ],
      "op": "SSTORE",
      "path": "25"
    },
    "1301": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19181,
        19200
      ],
      "op": "SWAP6",
      "path": "25"
    },
    "1302": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19181,
        19200
      ],
      "op": "DUP2",
      "path": "25"
    },
    "1303": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19181,
        19200
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "1304": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19181,
        19200
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "1305": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19181,
        19200
      ],
      "op": "PUSH32",
      "path": "25",
      "value": "0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B"
    },
    "1338": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19181,
        19200
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "1339": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19181,
        19200
      ],
      "op": "SWAP6",
      "path": "25"
    },
    "1340": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19181,
        19200
      ],
      "op": "ADD",
      "path": "25"
    },
    "1341": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19181,
        19200
      ],
      "op": "DUP1",
      "path": "25"
    },
    "1342": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19181,
        19200
      ],
      "op": "SLOAD",
      "path": "25"
    },
    "1343": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19181,
        19200
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "1344": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19181,
        19200
      ],
      "op": "SWAP8",
      "path": "25"
    },
    "1345": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19181,
        19200
      ],
      "op": "AND",
      "path": "25"
    },
    "1346": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19181,
        19200
      ],
      "op": "DUP5",
      "path": "25"
    },
    "1347": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19181,
        19200
      ],
      "op": "OR",
      "path": "25"
    },
    "1348": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19181,
        19200
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "1349": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19181,
        19200
      ],
      "op": "SWAP7",
      "path": "25"
    },
    "1350": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19181,
        19200
      ],
      "op": "SSTORE",
      "path": "25"
    },
    "1351": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19245,
        19260
      ],
      "op": "SWAP3",
      "path": "25",
      "statement": 10
    },
    "1352": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19245,
        19260
      ],
      "op": "SLOAD",
      "path": "25"
    },
    "1353": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19211,
        19261
      ],
      "op": "DUP4",
      "path": "25"
    },
    "1354": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19211,
        19261
      ],
      "op": "MLOAD",
      "path": "25"
    },
    "1355": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19211,
        19261
      ],
      "op": "SWAP3",
      "path": "25"
    },
    "1356": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19211,
        19261
      ],
      "op": "DUP4",
      "path": "25"
    },
    "1357": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19211,
        19261
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "1358": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19211,
        19261
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "1359": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19211,
        19261
      ],
      "op": "DUP3",
      "path": "25"
    },
    "1360": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19211,
        19261
      ],
      "op": "ADD",
      "path": "25"
    },
    "1361": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19211,
        19261
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "1362": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19211,
        19261
      ],
      "op": "DUP2",
      "path": "25"
    },
    "1363": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19211,
        19261
      ],
      "op": "MLOAD",
      "path": "25"
    },
    "1364": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19211,
        19261
      ],
      "op": "PUSH32",
      "path": "25",
      "value": "0xD3648BD0F6BA80134A33BA9275AC585D9D315F0AD8355CDDEFDE31AFA28D0E9"
    },
    "1397": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19211,
        19261
      ],
      "op": "SWAP3",
      "path": "25"
    },
    "1398": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19211,
        19261
      ],
      "op": "SWAP2",
      "path": "25"
    },
    "1399": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19211,
        19261
      ],
      "op": "DUP2",
      "path": "25"
    },
    "1400": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19211,
        19261
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "1401": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19211,
        19261
      ],
      "op": "SUB",
      "path": "25"
    },
    "1402": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19211,
        19261
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "1403": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19211,
        19261
      ],
      "op": "SWAP2",
      "path": "25"
    },
    "1404": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19211,
        19261
      ],
      "op": "ADD",
      "path": "25"
    },
    "1405": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19211,
        19261
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "1406": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        19211,
        19261
      ],
      "op": "LOG3",
      "path": "25"
    },
    "1407": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "POP",
      "path": "25"
    },
    "1408": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "POP",
      "path": "25"
    },
    "1409": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "POP",
      "path": "25"
    },
    "1410": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "POP",
      "path": "25"
    },
    "1411": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "SWAP3",
      "path": "25"
    },
    "1412": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "SWAP2",
      "path": "25"
    },
    "1413": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "POP",
      "path": "25"
    },
    "1414": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        18338,
        19266
      ],
      "op": "POP",
      "path": "25"
    },
    "1415": {
      "fn": "MockUniswapV2Factory.createPair",
      "jump": "o",
      "offset": [
        18338,
        19266
      ],
      "op": "JUMP",
      "path": "25"
    },
    "1416": {
      "offset": [
        17978,
        18040
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "1417": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x2"
    },
    "1419": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x20"
    },
    "1421": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "1422": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "DUP2",
      "path": "25"
    },
    "1423": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "1424": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x0"
    },
    "1426": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "SWAP3",
      "path": "25"
    },
    "1427": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "DUP4",
      "path": "25"
    },
    "1428": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "1429": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x40"
    },
    "1431": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "DUP1",
      "path": "25"
    },
    "1432": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "DUP5",
      "path": "25"
    },
    "1433": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "KECCAK256",
      "path": "25"
    },
    "1434": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "1435": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "SWAP2",
      "path": "25"
    },
    "1436": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "1437": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "1438": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "DUP3",
      "path": "25"
    },
    "1439": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "1440": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "1441": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "KECCAK256",
      "path": "25"
    },
    "1442": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "SLOAD",
      "path": "25"
    },
    "1443": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1445": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1447": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1449": {
      "op": "SHL"
    },
    "1450": {
      "op": "SUB"
    },
    "1451": {
      "offset": [
        17978,
        18040
      ],
      "op": "AND",
      "path": "25"
    },
    "1452": {
      "fn": "MockUniswapV2Factory.createPair",
      "offset": [
        17978,
        18040
      ],
      "op": "DUP2",
      "path": "25"
    },
    "1453": {
      "fn": "MockUniswapV2Factory.createPair",
      "jump": "o",
      "offset": [
        17978,
        18040
      ],
      "op": "JUMP",
      "path": "25"
    },
    "1454": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19270,
        19402
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "1455": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19341,
        19352
      ],
      "op": "PUSH1",
      "path": "25",
      "statement": 11,
      "value": "0x1"
    },
    "1457": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19341,
        19352
      ],
      "op": "SLOAD",
      "path": "25"
    },
    "1458": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1460": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1462": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1464": {
      "op": "SHL"
    },
    "1465": {
      "op": "SUB"
    },
    "1466": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19341,
        19352
      ],
      "op": "AND",
      "path": "25"
    },
    "1467": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19327,
        19337
      ],
      "op": "CALLER",
      "path": "25"
    },
    "1468": {
      "branch": 18,
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19327,
        19352
      ],
      "op": "EQ",
      "path": "25"
    },
    "1469": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19319,
        19377
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0x604"
    },
    "1472": {
      "branch": 18,
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19319,
        19377
      ],
      "op": "JUMPI",
      "path": "25"
    },
    "1473": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19319,
        19377
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x40"
    },
    "1475": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19319,
        19377
      ],
      "op": "DUP1",
      "path": "25"
    },
    "1476": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19319,
        19377
      ],
      "op": "MLOAD",
      "path": "25"
    },
    "1477": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1481": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1483": {
      "op": "SHL"
    },
    "1484": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19319,
        19377
      ],
      "op": "DUP2",
      "path": "25"
    },
    "1485": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19319,
        19377
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "1486": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19319,
        19377
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x20"
    },
    "1488": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19319,
        19377
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x4"
    },
    "1490": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19319,
        19377
      ],
      "op": "DUP3",
      "path": "25"
    },
    "1491": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19319,
        19377
      ],
      "op": "ADD",
      "path": "25"
    },
    "1492": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19319,
        19377
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "1493": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19319,
        19377
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x14"
    },
    "1495": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19319,
        19377
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x24"
    },
    "1497": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19319,
        19377
      ],
      "op": "DUP3",
      "path": "25"
    },
    "1498": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19319,
        19377
      ],
      "op": "ADD",
      "path": "25"
    },
    "1499": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19319,
        19377
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "1500": {
      "op": "PUSH20",
      "value": "0x2AB734B9BBB0B82B191D102327A92124A22222A7"
    },
    "1521": {
      "op": "PUSH1",
      "value": "0x61"
    },
    "1523": {
      "op": "SHL"
    },
    "1524": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19319,
        19377
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x44"
    },
    "1526": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19319,
        19377
      ],
      "op": "DUP3",
      "path": "25"
    },
    "1527": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19319,
        19377
      ],
      "op": "ADD",
      "path": "25"
    },
    "1528": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19319,
        19377
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "1529": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19319,
        19377
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "1530": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19319,
        19377
      ],
      "op": "MLOAD",
      "path": "25"
    },
    "1531": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19319,
        19377
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "1532": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19319,
        19377
      ],
      "op": "DUP2",
      "path": "25"
    },
    "1533": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19319,
        19377
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "1534": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19319,
        19377
      ],
      "op": "SUB",
      "path": "25"
    },
    "1535": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19319,
        19377
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x64"
    },
    "1537": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19319,
        19377
      ],
      "op": "ADD",
      "path": "25"
    },
    "1538": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19319,
        19377
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "1539": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19319,
        19377
      ],
      "op": "REVERT",
      "path": "25"
    },
    "1540": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19319,
        19377
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "1541": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19383,
        19388
      ],
      "op": "PUSH1",
      "path": "25",
      "statement": 12,
      "value": "0x0"
    },
    "1543": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19383,
        19397
      ],
      "op": "DUP1",
      "path": "25"
    },
    "1544": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19383,
        19397
      ],
      "op": "SLOAD",
      "path": "25"
    },
    "1545": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1547": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1549": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1551": {
      "op": "SHL"
    },
    "1552": {
      "op": "SUB"
    },
    "1553": {
      "op": "NOT"
    },
    "1554": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19383,
        19397
      ],
      "op": "AND",
      "path": "25"
    },
    "1555": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1557": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1559": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1561": {
      "op": "SHL"
    },
    "1562": {
      "op": "SUB"
    },
    "1563": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19383,
        19397
      ],
      "op": "SWAP3",
      "path": "25"
    },
    "1564": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19383,
        19397
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "1565": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19383,
        19397
      ],
      "op": "SWAP3",
      "path": "25"
    },
    "1566": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19383,
        19397
      ],
      "op": "AND",
      "path": "25"
    },
    "1567": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19383,
        19397
      ],
      "op": "SWAP2",
      "path": "25"
    },
    "1568": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19383,
        19397
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "1569": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19383,
        19397
      ],
      "op": "SWAP2",
      "path": "25"
    },
    "1570": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19383,
        19397
      ],
      "op": "OR",
      "path": "25"
    },
    "1571": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19383,
        19397
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "1572": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "offset": [
        19383,
        19397
      ],
      "op": "SSTORE",
      "path": "25"
    },
    "1573": {
      "fn": "MockUniswapV2Factory.setFeeTo",
      "jump": "o",
      "offset": [
        19270,
        19402
      ],
      "op": "JUMP",
      "path": "25"
    },
    "1574": {
      "op": "JUMPDEST"
    },
    "1575": {
      "op": "PUSH2",
      "value": "0x22DA"
    },
    "1578": {
      "op": "DUP1"
    },
    "1579": {
      "op": "PUSH2",
      "value": "0x634"
    },
    "1582": {
      "op": "DUP4"
    },
    "1583": {
      "op": "CODECOPY"
    },
    "1584": {
      "op": "ADD"
    },
    "1585": {
      "op": "SWAP1"
    },
    "1586": {
      "op": "JUMP"
    }
  },
  "sha1": "cd16f0aaabbf6cd1b7977ef35a463bf5dced33ef",
  "source": "pragma solidity 0.6.12;\n\ninterface MockUniswapV2FactoryIUniswapV2Factory {\n  event PairCreated(address indexed token0, address indexed token1, address pair, uint);\n\n  function feeTo() external view returns (address);\n\n  function feeToSetter() external view returns (address);\n\n  function getPair(address tokenA, address tokenB) external view returns (address pair);\n\n  function allPairs(uint) external view returns (address pair);\n\n  function allPairsLength() external view returns (uint);\n\n  function createPair(address tokenA, address tokenB) external returns (address pair);\n\n  function setFeeTo(address) external;\n\n  function setFeeToSetter(address) external;\n}\n\ninterface MockUniswapV2FactoryIUniswapV2Pair {\n  event Approval(address indexed owner, address indexed spender, uint value);\n  event Transfer(address indexed from, address indexed to, uint value);\n\n  function name() external pure returns (string memory);\n\n  function symbol() external pure returns (string memory);\n\n  function decimals() external pure returns (uint8);\n\n  function totalSupply() external view returns (uint);\n\n  function balanceOf(address owner) external view returns (uint);\n\n  function allowance(address owner, address spender) external view returns (uint);\n\n  function approve(address spender, uint value) external returns (bool);\n\n  function transfer(address to, uint value) external returns (bool);\n\n  function transferFrom(\n    address from,\n    address to,\n    uint value\n  ) external returns (bool);\n\n  function DOMAIN_SEPARATOR() external view returns (bytes32);\n\n  function PERMIT_TYPEHASH() external pure returns (bytes32);\n\n  function nonces(address owner) external view returns (uint);\n\n  function permit(\n    address owner,\n    address spender,\n    uint value,\n    uint deadline,\n    uint8 v,\n    bytes32 r,\n    bytes32 s\n  ) external;\n\n  event Mint(address indexed sender, uint amount0, uint amount1);\n  event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);\n  event Swap(\n    address indexed sender,\n    uint amount0In,\n    uint amount1In,\n    uint amount0Out,\n    uint amount1Out,\n    address indexed to\n  );\n  event Sync(uint112 reserve0, uint112 reserve1);\n\n  function MINIMUM_LIQUIDITY() external pure returns (uint);\n\n  function factory() external view returns (address);\n\n  function token0() external view returns (address);\n\n  function token1() external view returns (address);\n\n  function getReserves()\n    external\n    view\n    returns (\n      uint112 reserve0,\n      uint112 reserve1,\n      uint32 blockTimestampLast\n    );\n\n  function price0CumulativeLast() external view returns (uint);\n\n  function price1CumulativeLast() external view returns (uint);\n\n  function kLast() external view returns (uint);\n\n  function mint(address to) external returns (uint liquidity);\n\n  function burn(address to) external returns (uint amount0, uint amount1);\n\n  function swap(\n    uint amount0Out,\n    uint amount1Out,\n    address to,\n    bytes calldata data\n  ) external;\n\n  function skim(address to) external;\n\n  function sync() external;\n\n  function initialize(address, address) external;\n}\n\ninterface MockUniswapV2FactoryIUniswapV2ERC20 {\n  event Approval(address indexed owner, address indexed spender, uint value);\n  event Transfer(address indexed from, address indexed to, uint value);\n\n  function name() external pure returns (string memory);\n\n  function symbol() external pure returns (string memory);\n\n  function decimals() external pure returns (uint8);\n\n  function totalSupply() external view returns (uint);\n\n  function balanceOf(address owner) external view returns (uint);\n\n  function allowance(address owner, address spender) external view returns (uint);\n\n  function approve(address spender, uint value) external returns (bool);\n\n  function transfer(address to, uint value) external returns (bool);\n\n  function transferFrom(\n    address from,\n    address to,\n    uint value\n  ) external returns (bool);\n\n  function DOMAIN_SEPARATOR() external view returns (bytes32);\n\n  function PERMIT_TYPEHASH() external pure returns (bytes32);\n\n  function nonces(address owner) external view returns (uint);\n\n  function permit(\n    address owner,\n    address spender,\n    uint value,\n    uint deadline,\n    uint8 v,\n    bytes32 r,\n    bytes32 s\n  ) external;\n}\n\ninterface MockUniswapV2FactoryIERC20 {\n  event Approval(address indexed owner, address indexed spender, uint value);\n  event Transfer(address indexed from, address indexed to, uint value);\n\n  function name() external view returns (string memory);\n\n  function symbol() external view returns (string memory);\n\n  function decimals() external view returns (uint8);\n\n  function totalSupply() external view returns (uint);\n\n  function balanceOf(address owner) external view returns (uint);\n\n  function allowance(address owner, address spender) external view returns (uint);\n\n  function approve(address spender, uint value) external returns (bool);\n\n  function transfer(address to, uint value) external returns (bool);\n\n  function transferFrom(\n    address from,\n    address to,\n    uint value\n  ) external returns (bool);\n}\n\ninterface IUniswapV2Callee {\n  function uniswapV2Call(\n    address sender,\n    uint amount0,\n    uint amount1,\n    bytes calldata data\n  ) external;\n}\n\ncontract UniswapV2ERC20 {\n  using MockUniswapV2FactorySafeMath for uint;\n\n  string public constant name = 'Uniswap V2';\n  string public constant symbol = 'UNI-V2';\n  uint8 public constant decimals = 18;\n  uint public totalSupply;\n  mapping(address => uint) public balanceOf;\n  mapping(address => mapping(address => uint)) public allowance;\n\n  bytes32 public DOMAIN_SEPARATOR;\n  // keccak256(\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\");\n  bytes32 public constant PERMIT_TYPEHASH =\n    0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;\n  mapping(address => uint) public nonces;\n\n  event Approval(address indexed owner, address indexed spender, uint value);\n  event Transfer(address indexed from, address indexed to, uint value);\n\n  constructor() public {\n    uint chainId;\n    assembly {\n      chainId := chainid()\n    }\n    DOMAIN_SEPARATOR = keccak256(\n      abi.encode(\n        keccak256(\n          'EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'\n        ),\n        keccak256(bytes(name)),\n        keccak256(bytes('1')),\n        chainId,\n        address(this)\n      )\n    );\n  }\n\n  function _mint(address to, uint value) internal {\n    totalSupply = totalSupply.add(value);\n    balanceOf[to] = balanceOf[to].add(value);\n    emit Transfer(address(0), to, value);\n  }\n\n  function _burn(address from, uint value) internal {\n    balanceOf[from] = balanceOf[from].sub(value);\n    totalSupply = totalSupply.sub(value);\n    emit Transfer(from, address(0), value);\n  }\n\n  function _approve(\n    address owner,\n    address spender,\n    uint value\n  ) private {\n    allowance[owner][spender] = value;\n    emit Approval(owner, spender, value);\n  }\n\n  function _transfer(\n    address from,\n    address to,\n    uint value\n  ) private {\n    balanceOf[from] = balanceOf[from].sub(value);\n    balanceOf[to] = balanceOf[to].add(value);\n    emit Transfer(from, to, value);\n  }\n\n  function approve(address spender, uint value) external returns (bool) {\n    _approve(msg.sender, spender, value);\n    return true;\n  }\n\n  function transfer(address to, uint value) external returns (bool) {\n    _transfer(msg.sender, to, value);\n    return true;\n  }\n\n  function transferFrom(\n    address from,\n    address to,\n    uint value\n  ) external returns (bool) {\n    if (allowance[from][msg.sender] != uint(-1)) {\n      allowance[from][msg.sender] = allowance[from][msg.sender].sub(value);\n    }\n    _transfer(from, to, value);\n    return true;\n  }\n\n  function permit(\n    address owner,\n    address spender,\n    uint value,\n    uint deadline,\n    uint8 v,\n    bytes32 r,\n    bytes32 s\n  ) external {\n    require(deadline >= block.timestamp, 'UniswapV2: EXPIRED');\n    bytes32 digest =\n      keccak256(\n        abi.encodePacked(\n          '\\x19\\x01',\n          DOMAIN_SEPARATOR,\n          keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline))\n        )\n      );\n    address recoveredAddress = ecrecover(digest, v, r, s);\n    require(\n      recoveredAddress != address(0) && recoveredAddress == owner,\n      'UniswapV2: INVALID_SIGNATURE'\n    );\n    _approve(owner, spender, value);\n  }\n}\n\ncontract MockUniswapV2FactoryUniswapV2Pair is UniswapV2ERC20 {\n  using MockUniswapV2FactorySafeMath for uint;\n  using UQ112x112 for uint224;\n\n  uint public constant MINIMUM_LIQUIDITY = 10**3;\n  bytes4 private constant SELECTOR = bytes4(keccak256(bytes('transfer(address,uint256)')));\n\n  address public factory;\n  address public token0;\n  address public token1;\n\n  uint112 private reserve0; // uses single storage slot, accessible via getReserves\n  uint112 private reserve1; // uses single storage slot, accessible via getReserves\n  uint32 private blockTimestampLast; // uses single storage slot, accessible via getReserves\n\n  uint public price0CumulativeLast;\n  uint public price1CumulativeLast;\n  uint public kLast; // reserve0 * reserve1, as of immediately after the most recent liquidity event\n\n  uint private unlocked = 1;\n  modifier lock() {\n    require(unlocked == 1, 'UniswapV2: LOCKED');\n    unlocked = 0;\n    _;\n    unlocked = 1;\n  }\n\n  function getReserves()\n    public\n    view\n    returns (\n      uint112 _reserve0,\n      uint112 _reserve1,\n      uint32 _blockTimestampLast\n    )\n  {\n    _reserve0 = reserve0;\n    _reserve1 = reserve1;\n    _blockTimestampLast = blockTimestampLast;\n  }\n\n  function _safeTransfer(\n    address token,\n    address to,\n    uint value\n  ) private {\n    (bool success, bytes memory data) = token.call(abi.encodeWithSelector(SELECTOR, to, value));\n    require(\n      success && (data.length == 0 || abi.decode(data, (bool))),\n      'UniswapV2: TRANSFER_FAILED'\n    );\n  }\n\n  event Mint(address indexed sender, uint amount0, uint amount1);\n  event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);\n  event Swap(\n    address indexed sender,\n    uint amount0In,\n    uint amount1In,\n    uint amount0Out,\n    uint amount1Out,\n    address indexed to\n  );\n  event Sync(uint112 reserve0, uint112 reserve1);\n\n  constructor() public {\n    factory = msg.sender;\n  }\n\n  // called once by the factory at time of deployment\n  function initialize(address _token0, address _token1) external {\n    require(msg.sender == factory, 'UniswapV2: FORBIDDEN'); // sufficient check\n    token0 = _token0;\n    token1 = _token1;\n  }\n\n  // update reserves and, on the first call per block, price accumulators\n  function _update(\n    uint balance0,\n    uint balance1,\n    uint112 _reserve0,\n    uint112 _reserve1\n  ) private {\n    require(balance0 <= uint112(-1) && balance1 <= uint112(-1), 'UniswapV2: OVERFLOW');\n    uint32 blockTimestamp = uint32(block.timestamp % 2**32);\n    uint32 timeElapsed = blockTimestamp - blockTimestampLast; // overflow is desired\n    if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) {\n      // * never overflows, and + overflow is desired\n      price0CumulativeLast += uint(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed;\n      price1CumulativeLast += uint(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed;\n    }\n    reserve0 = uint112(balance0);\n    reserve1 = uint112(balance1);\n    blockTimestampLast = blockTimestamp;\n    emit Sync(reserve0, reserve1);\n  }\n\n  // if fee is on, mint liquidity equivalent to 1/6th of the growth in sqrt(k)\n  function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) {\n    address feeTo = MockUniswapV2FactoryIUniswapV2Factory(factory).feeTo();\n    feeOn = feeTo != address(0);\n    uint _kLast = kLast; // gas savings\n    if (feeOn) {\n      if (_kLast != 0) {\n        uint rootK = MockUniswapV2FactoryMah.sqrt(uint(_reserve0).mul(_reserve1));\n        uint rootKLast = MockUniswapV2FactoryMah.sqrt(_kLast);\n        if (rootK > rootKLast) {\n          uint numerator = totalSupply.mul(rootK.sub(rootKLast));\n          uint denominator = rootK.mul(5).add(rootKLast);\n          uint liquidity = numerator / denominator;\n          if (liquidity > 0) _mint(feeTo, liquidity);\n        }\n      }\n    } else if (_kLast != 0) {\n      kLast = 0;\n    }\n  }\n\n  // this low-level function should be called from a contract which performs important safety checks\n  function mint(address to) external lock returns (uint liquidity) {\n    (uint112 _reserve0, uint112 _reserve1, ) = getReserves(); // gas savings\n    uint balance0 = MockUniswapV2FactoryIERC20(token0).balanceOf(address(this));\n    uint balance1 = MockUniswapV2FactoryIERC20(token1).balanceOf(address(this));\n    uint amount0 = balance0.sub(_reserve0);\n    uint amount1 = balance1.sub(_reserve1);\n\n    bool feeOn = _mintFee(_reserve0, _reserve1);\n    uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee\n    if (_totalSupply == 0) {\n      liquidity = MockUniswapV2FactoryMah.sqrt(amount0.mul(amount1)).sub(MINIMUM_LIQUIDITY);\n      _mint(address(0), MINIMUM_LIQUIDITY); // permanently lock the first MINIMUM_LIQUIDITY tokens\n    } else {\n      liquidity = MockUniswapV2FactoryMah.min(\n        amount0.mul(_totalSupply) / _reserve0,\n        amount1.mul(_totalSupply) / _reserve1\n      );\n    }\n    require(liquidity > 0, 'UniswapV2: INSUFFICIENT_LIQUIDITY_MINTED');\n    _mint(to, liquidity);\n\n    _update(balance0, balance1, _reserve0, _reserve1);\n    if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date\n    emit Mint(msg.sender, amount0, amount1);\n  }\n\n  // this low-level function should be called from a contract which performs important safety checks\n  function burn(address to) external lock returns (uint amount0, uint amount1) {\n    (uint112 _reserve0, uint112 _reserve1, ) = getReserves(); // gas savings\n    address _token0 = token0; // gas savings\n    address _token1 = token1; // gas savings\n    uint balance0 = MockUniswapV2FactoryIERC20(_token0).balanceOf(address(this));\n    uint balance1 = MockUniswapV2FactoryIERC20(_token1).balanceOf(address(this));\n    uint liquidity = balanceOf[address(this)];\n\n    bool feeOn = _mintFee(_reserve0, _reserve1);\n    uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee\n    amount0 = liquidity.mul(balance0) / _totalSupply; // using balances ensures pro-rata distribution\n    amount1 = liquidity.mul(balance1) / _totalSupply; // using balances ensures pro-rata distribution\n    require(amount0 > 0 && amount1 > 0, 'UniswapV2: INSUFFICIENT_LIQUIDITY_BURNED');\n    _burn(address(this), liquidity);\n    _safeTransfer(_token0, to, amount0);\n    _safeTransfer(_token1, to, amount1);\n    balance0 = MockUniswapV2FactoryIERC20(_token0).balanceOf(address(this));\n    balance1 = MockUniswapV2FactoryIERC20(_token1).balanceOf(address(this));\n\n    _update(balance0, balance1, _reserve0, _reserve1);\n    if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date\n    emit Burn(msg.sender, amount0, amount1, to);\n  }\n\n  // this low-level function should be called from a contract which performs important safety checks\n  function swap(\n    uint amount0Out,\n    uint amount1Out,\n    address to,\n    bytes calldata data\n  ) external lock {\n    require(amount0Out > 0 || amount1Out > 0, 'UniswapV2: INSUFFICIENT_OUTPUT_AMOUNT');\n    (uint112 _reserve0, uint112 _reserve1, ) = getReserves(); // gas savings\n    require(amount0Out < _reserve0 && amount1Out < _reserve1, 'UniswapV2: INSUFFICIENT_LIQUIDITY');\n\n    uint balance0;\n    uint balance1;\n    {\n      // scope for _token{0,1}, avoids stack too deep errors\n      address _token0 = token0;\n      address _token1 = token1;\n      require(to != _token0 && to != _token1, 'UniswapV2: INVALID_TO');\n      if (amount0Out > 0) _safeTransfer(_token0, to, amount0Out); // optimistically transfer tokens\n      if (amount1Out > 0) _safeTransfer(_token1, to, amount1Out); // optimistically transfer tokens\n      if (data.length > 0)\n        IUniswapV2Callee(to).uniswapV2Call(msg.sender, amount0Out, amount1Out, data);\n      balance0 = MockUniswapV2FactoryIERC20(_token0).balanceOf(address(this));\n      balance1 = MockUniswapV2FactoryIERC20(_token1).balanceOf(address(this));\n    }\n    uint amount0In = balance0 > _reserve0 - amount0Out ? balance0 - (_reserve0 - amount0Out) : 0;\n    uint amount1In = balance1 > _reserve1 - amount1Out ? balance1 - (_reserve1 - amount1Out) : 0;\n    require(amount0In > 0 || amount1In > 0, 'UniswapV2: INSUFFICIENT_INPUT_AMOUNT');\n    {\n      // scope for reserve{0,1}Adjusted, avoids stack too deep errors\n      uint balance0Adjusted = balance0.mul(1000).sub(amount0In.mul(3));\n      uint balance1Adjusted = balance1.mul(1000).sub(amount1In.mul(3));\n      require(\n        balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(1000**2),\n        'UniswapV2: K'\n      );\n    }\n\n    _update(balance0, balance1, _reserve0, _reserve1);\n    emit Swap(msg.sender, amount0In, amount1In, amount0Out, amount1Out, to);\n  }\n\n  // force balances to match reserves\n  function skim(address to) external lock {\n    address _token0 = token0; // gas savings\n    address _token1 = token1; // gas savings\n    _safeTransfer(\n      _token0,\n      to,\n      MockUniswapV2FactoryIERC20(_token0).balanceOf(address(this)).sub(reserve0)\n    );\n    _safeTransfer(\n      _token1,\n      to,\n      MockUniswapV2FactoryIERC20(_token1).balanceOf(address(this)).sub(reserve1)\n    );\n  }\n\n  // force reserves to match balances\n  function sync() external lock {\n    _update(\n      MockUniswapV2FactoryIERC20(token0).balanceOf(address(this)),\n      MockUniswapV2FactoryIERC20(token1).balanceOf(address(this)),\n      reserve0,\n      reserve1\n    );\n  }\n}\n\ncontract MockUniswapV2Factory {\n  address public feeTo;\n  address public feeToSetter;\n\n  mapping(address => mapping(address => address)) public getPair;\n  address[] public allPairs;\n\n  event PairCreated(address indexed token0, address indexed token1, address pair, uint);\n\n  constructor(address _feeToSetter) public {\n    feeToSetter = _feeToSetter;\n  }\n\n  function allPairsLength() external view returns (uint) {\n    return allPairs.length;\n  }\n\n  function createPair(address tokenA, address tokenB) external returns (address pair) {\n    require(tokenA != tokenB, 'UniswapV2: IDENTICAL_ADDRESSES');\n    (address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);\n    require(token0 != address(0), 'UniswapV2: ZERO_ADDRESS');\n    require(getPair[token0][token1] == address(0), 'UniswapV2: PAIR_EXISTS'); // single check is sufficient\n    bytes memory bytecode = type(MockUniswapV2FactoryUniswapV2Pair).creationCode;\n    bytes32 salt = keccak256(abi.encodePacked(token0, token1));\n    assembly {\n      pair := create2(0, add(bytecode, 32), mload(bytecode), salt)\n    }\n    MockUniswapV2FactoryIUniswapV2Pair(pair).initialize(token0, token1);\n    getPair[token0][token1] = pair;\n    getPair[token1][token0] = pair; // populate mapping in the reverse direction\n    allPairs.push(pair);\n    emit PairCreated(token0, token1, pair, allPairs.length);\n  }\n\n  function setFeeTo(address _feeTo) external {\n    require(msg.sender == feeToSetter, 'UniswapV2: FORBIDDEN');\n    feeTo = _feeTo;\n  }\n\n  function setFeeToSetter(address _feeToSetter) external {\n    require(msg.sender == feeToSetter, 'UniswapV2: FORBIDDEN');\n    feeToSetter = _feeToSetter;\n  }\n}\n\n// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)\n\nlibrary MockUniswapV2FactorySafeMath {\n  function add(uint x, uint y) internal pure returns (uint z) {\n    require((z = x + y) >= x, 'ds-math-add-overflow');\n  }\n\n  function sub(uint x, uint y) internal pure returns (uint z) {\n    require((z = x - y) <= x, 'ds-math-sub-underflow');\n  }\n\n  function mul(uint x, uint y) internal pure returns (uint z) {\n    require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow');\n  }\n}\n\n// a library for performing various math operations\n\nlibrary MockUniswapV2FactoryMah {\n  function min(uint x, uint y) internal pure returns (uint z) {\n    z = x < y ? x : y;\n  }\n\n  // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)\n  function sqrt(uint y) internal pure returns (uint z) {\n    if (y > 3) {\n      z = y;\n      uint x = y / 2 + 1;\n      while (x < z) {\n        z = x;\n        x = (y / x + x) / 2;\n      }\n    } else if (y != 0) {\n      z = 1;\n    }\n  }\n}\n\n// a library for handling binary fixed point numbers (https://en.wikipedia.org/wiki/Q_(number_format))\n\n// range: [0, 2**112 - 1]\n// resolution: 1 / 2**112\n\nlibrary UQ112x112 {\n  uint224 constant Q112 = 2**112;\n\n  // encode a uint112 as a UQ112x112\n  function encode(uint112 y) internal pure returns (uint224 z) {\n    z = uint224(y) * Q112; // never overflows\n  }\n\n  // divide a UQ112x112 by a uint112, returning a UQ112x112\n  function uqdiv(uint224 x, uint112 y) internal pure returns (uint224 z) {\n    z = x / uint224(y);\n  }\n}\n",
  "sourceMap": "17889:1675:25:-:0;;;18164:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18164:78:25;18211:11;:26;;-1:-1:-1;;;;;;18211:26:25;-1:-1:-1;;;;;18211:26:25;;;;;;;;;17889:1675;;;-1:-1:-1;17889:1675:25;;",
  "sourcePath": "contracts/mock/MockUniswapV2Factory.sol",
  "type": "contract"
}