{
  "contractName": "Uniswap",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amountOutMin",
          "type": "uint256"
        },
        {
          "internalType": "address[]",
          "name": "path",
          "type": "address[]"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "swapExactETHForTokens",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amountOutMin",
          "type": "uint256"
        },
        {
          "internalType": "address[]",
          "name": "path",
          "type": "address[]"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "swapExactTokensForETH",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amountOutMin",
          "type": "uint256"
        },
        {
          "internalType": "address[]",
          "name": "path",
          "type": "address[]"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "swapExactTokensForTokens",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "WETH",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "factory",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amountA",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "reserveA",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "reserveB",
          "type": "uint256"
        }
      ],
      "name": "quote",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountB",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "reserveIn",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "reserveOut",
          "type": "uint256"
        }
      ],
      "name": "getAmountIn",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amountI",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "reserveIn",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "reserveOut",
          "type": "uint256"
        }
      ],
      "name": "getAmountOut",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountI\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/upgradables/contracts/Interfaces.sol\":\"Uniswap\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/upgradables/contracts/Interfaces.sol\":{\"keccak256\":\"0xe501727b0e5e15fe639129ab4b1abc59a14ebd3ddd05bb7056ac4fc26a8f3ee7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90d8797740cfd3933ae849f3144e30f9133a55b26634b3efefa8206cd91f62d8\",\"dweb:/ipfs/QmYLeetoyiPej9acnGzjLLwgVnEg4d2Eg1Xb4k3A1mJqj6\"]}},\"version\":1}",
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "immutableReferences": {},
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6;\n\npragma experimental ABIEncoderV2;\n\ninterface cERC20 {\n\tfunction mint(uint256 mintAmount) external returns (uint256);\n\n\tfunction redeemUnderlying(uint256 mintAmount) external returns (uint256);\n\n\tfunction exchangeRateCurrent() external returns (uint256);\n\n\tfunction exchangeRateStored() external view returns (uint256);\n\n\tfunction balanceOf(address addr) external view returns (uint256);\n\n\tfunction transfer(address to, uint256 amount) external returns (bool);\n\n\tfunction approve(address spender, uint256 amount) external returns (bool);\n}\n\ninterface GoodDollar is cERC20 {\n\tfunction getFees(uint256 value) external view returns (uint256, bool);\n\n\tfunction mint(address to, uint256 mintAmount) external returns (uint256);\n}\n\ninterface Staking {\n\tstruct Staker {\n\t\t// The staked DAI amount\n\t\tuint256 stakedDAI;\n\t\t// The latest block number which the\n\t\t// staker has staked tokens\n\t\tuint256 lastStake;\n\t}\n\n\tfunction stakeDAI(uint256 amount) external;\n\n\tfunction withdrawStake() external;\n\n\tfunction stakers(address staker) external view returns (Staker memory);\n}\n\ninterface Uniswap {\n\tfunction swapExactETHForTokens(\n\t\tuint256 amountOutMin,\n\t\taddress[] calldata path,\n\t\taddress to,\n\t\tuint256 deadline\n\t) external payable returns (uint256[] memory amounts);\n\n\tfunction swapExactTokensForETH(\n\t\tuint256 amountIn,\n\t\tuint256 amountOutMin,\n\t\taddress[] calldata path,\n\t\taddress to,\n\t\tuint256 deadline\n\t) external returns (uint256[] memory amounts);\n\n\tfunction swapExactTokensForTokens(\n\t\tuint256 amountIn,\n\t\tuint256 amountOutMin,\n\t\taddress[] calldata path,\n\t\taddress to,\n\t\tuint256 deadline\n\t) external returns (uint256[] memory amounts);\n\n\tfunction WETH() external pure returns (address);\n\n\tfunction factory() external pure returns (address);\n\n\tfunction quote(\n\t\tuint256 amountA,\n\t\tuint256 reserveA,\n\t\tuint256 reserveB\n\t) external pure returns (uint256 amountB);\n\n\tfunction getAmountIn(\n\t\tuint256 amountOut,\n\t\tuint256 reserveIn,\n\t\tuint256 reserveOut\n\t) external pure returns (uint256 amountIn);\n\n\tfunction getAmountOut(\n\t\tuint256 amountI,\n\t\tuint256 reserveIn,\n\t\tuint256 reserveOut\n\t) external pure returns (uint256 amountOut);\n}\n\ninterface UniswapFactory {\n\tfunction getPair(address tokenA, address tokenB)\n\t\texternal\n\t\tview\n\t\treturns (address);\n}\n\ninterface UniswapPair {\n\tfunction getReserves()\n\t\texternal\n\t\tview\n\t\treturns (\n\t\t\tuint112 reserve0,\n\t\t\tuint112 reserve1,\n\t\t\tuint32 blockTimestampLast\n\t\t);\n\n\tfunction kLast() external view returns (uint256);\n}\n\ninterface Reserve {\n\tfunction buy(\n\t\taddress _buyWith,\n\t\tuint256 _tokenAmount,\n\t\tuint256 _minReturn\n\t) external returns (uint256);\n}\n\ninterface IIdentity {\n\tfunction isWhitelisted(address user) external view returns (bool);\n\n\tfunction addWhitelistedWithDID(address account, string memory did) external;\n\n\tfunction removeWhitelisted(address account) external;\n\n\tfunction addIdentityAdmin(address account) external returns (bool);\n\n\tfunction setAvatar(address _avatar) external;\n}\n\ninterface UBIScheme {\n\tfunction currentDay() external view returns (uint256);\n}\n\ninterface ProxyAdmin {\n\tfunction getProxyImplementation(address proxy)\n\t\texternal\n\t\tview\n\t\treturns (address);\n\n\tfunction getProxyAdmin(address proxy) external view returns (address);\n\n\tfunction upgrade(address proxy, address implementation) external;\n\n\tfunction owner() external view returns (address);\n\n\tfunction transferOwnership(address newOwner) external;\n}\n",
  "sourcePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/upgradables/contracts/Interfaces.sol",
  "ast": {
    "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/upgradables/contracts/Interfaces.sol",
    "exportedSymbols": {
      "GoodDollar": [
        330
      ],
      "IIdentity": [
        513
      ],
      "ProxyAdmin": [
        551
      ],
      "Reserve": [
        481
      ],
      "Staking": [
        351
      ],
      "UBIScheme": [
        519
      ],
      "Uniswap": [
        444
      ],
      "UniswapFactory": [
        454
      ],
      "UniswapPair": [
        469
      ],
      "cERC20": [
        309
      ]
    },
    "id": 552,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 258,
        "literals": [
          "solidity",
          ">=",
          "0.6"
        ],
        "nodeType": "PragmaDirective",
        "src": "33:22:1"
      },
      {
        "id": 259,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "57:33:1"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 309,
        "linearizedBaseContracts": [
          309
        ],
        "name": "cERC20",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "functionSelector": "a0712d68",
            "id": 266,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "mint",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 262,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 261,
                  "mutability": "mutable",
                  "name": "mintAmount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 266,
                  "src": "126:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 260,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "126:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "125:20:1"
            },
            "returnParameters": {
              "id": 265,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 264,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 266,
                  "src": "164:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 263,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "164:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "163:9:1"
            },
            "scope": 309,
            "src": "112:61:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "852a12e3",
            "id": 273,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "redeemUnderlying",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 269,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 268,
                  "mutability": "mutable",
                  "name": "mintAmount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 273,
                  "src": "202:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 267,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "202:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "201:20:1"
            },
            "returnParameters": {
              "id": 272,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 271,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 273,
                  "src": "240:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 270,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "240:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "239:9:1"
            },
            "scope": 309,
            "src": "176:73:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "bd6d894d",
            "id": 278,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "exchangeRateCurrent",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 274,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "280:2:1"
            },
            "returnParameters": {
              "id": 277,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 276,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 278,
                  "src": "301:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 275,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "301:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "300:9:1"
            },
            "scope": 309,
            "src": "252:58:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "182df0f5",
            "id": 283,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "exchangeRateStored",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 279,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "340:2:1"
            },
            "returnParameters": {
              "id": 282,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 281,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 283,
                  "src": "366:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 280,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "366:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "365:9:1"
            },
            "scope": 309,
            "src": "313:62:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "70a08231",
            "id": 290,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "balanceOf",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 286,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 285,
                  "mutability": "mutable",
                  "name": "addr",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 290,
                  "src": "397:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 284,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "397:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "396:14:1"
            },
            "returnParameters": {
              "id": 289,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 288,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 290,
                  "src": "434:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 287,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "434:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "433:9:1"
            },
            "scope": 309,
            "src": "378:65:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "a9059cbb",
            "id": 299,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "transfer",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 295,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 292,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 299,
                  "src": "464:10:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 291,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "464:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 294,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 299,
                  "src": "476:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 293,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "476:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "463:28:1"
            },
            "returnParameters": {
              "id": 298,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 297,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 299,
                  "src": "510:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 296,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "510:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "509:6:1"
            },
            "scope": 309,
            "src": "446:70:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "095ea7b3",
            "id": 308,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "approve",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 304,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 301,
                  "mutability": "mutable",
                  "name": "spender",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 308,
                  "src": "536:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 300,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "536:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 303,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 308,
                  "src": "553:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 302,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "553:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "535:33:1"
            },
            "returnParameters": {
              "id": 307,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 306,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 308,
                  "src": "587:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 305,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "587:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "586:6:1"
            },
            "scope": 309,
            "src": "519:74:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 552,
        "src": "92:503:1"
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 310,
              "name": "cERC20",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 309,
              "src": "621:6:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_cERC20_$309",
                "typeString": "contract cERC20"
              }
            },
            "id": 311,
            "nodeType": "InheritanceSpecifier",
            "src": "621:6:1"
          }
        ],
        "contractDependencies": [
          309
        ],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 330,
        "linearizedBaseContracts": [
          330,
          309
        ],
        "name": "GoodDollar",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "functionSelector": "d5a06d4c",
            "id": 320,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getFees",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 314,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 313,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 320,
                  "src": "648:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 312,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "648:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "647:15:1"
            },
            "returnParameters": {
              "id": 319,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 316,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 320,
                  "src": "686:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 315,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "686:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 318,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 320,
                  "src": "695:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 317,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "695:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "685:15:1"
            },
            "scope": 330,
            "src": "631:70:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "40c10f19",
            "id": 329,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "mint",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 325,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 322,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 329,
                  "src": "718:10:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 321,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "718:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 324,
                  "mutability": "mutable",
                  "name": "mintAmount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 329,
                  "src": "730:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 323,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "730:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "717:32:1"
            },
            "returnParameters": {
              "id": 328,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 327,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 329,
                  "src": "768:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 326,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "768:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "767:9:1"
            },
            "scope": 330,
            "src": "704:73:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 552,
        "src": "597:182:1"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 351,
        "linearizedBaseContracts": [
          351
        ],
        "name": "Staking",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "Staking.Staker",
            "id": 335,
            "members": [
              {
                "constant": false,
                "id": 332,
                "mutability": "mutable",
                "name": "stakedDAI",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 335,
                "src": "847:17:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 331,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "847:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 334,
                "mutability": "mutable",
                "name": "lastStake",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 335,
                "src": "937:17:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 333,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "937:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Staker",
            "nodeType": "StructDefinition",
            "scope": 351,
            "src": "802:156:1",
            "visibility": "public"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "64aab239",
            "id": 340,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "stakeDAI",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 338,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 337,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 340,
                  "src": "979:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 336,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "979:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "978:16:1"
            },
            "returnParameters": {
              "id": 339,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1003:0:1"
            },
            "scope": 351,
            "src": "961:43:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "bed9d861",
            "id": 343,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "withdrawStake",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 341,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1029:2:1"
            },
            "returnParameters": {
              "id": 342,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1040:0:1"
            },
            "scope": 351,
            "src": "1007:34:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "9168ae72",
            "id": 350,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "stakers",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 346,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 345,
                  "mutability": "mutable",
                  "name": "staker",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 350,
                  "src": "1061:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 344,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1061:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1060:16:1"
            },
            "returnParameters": {
              "id": 349,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 348,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 350,
                  "src": "1100:13:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Staker_$335_memory_ptr",
                    "typeString": "struct Staking.Staker"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 347,
                    "name": "Staker",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 335,
                    "src": "1100:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Staker_$335_storage_ptr",
                      "typeString": "struct Staking.Staker"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1099:15:1"
            },
            "scope": 351,
            "src": "1044:71:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 552,
        "src": "781:336:1"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 444,
        "linearizedBaseContracts": [
          444
        ],
        "name": "Uniswap",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "functionSelector": "7ff36ab5",
            "id": 366,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "swapExactETHForTokens",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 361,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 353,
                  "mutability": "mutable",
                  "name": "amountOutMin",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 366,
                  "src": "1174:20:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 352,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1174:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 356,
                  "mutability": "mutable",
                  "name": "path",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 366,
                  "src": "1198:23:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 354,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1198:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 355,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1198:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 358,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 366,
                  "src": "1225:10:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 357,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1225:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 360,
                  "mutability": "mutable",
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 366,
                  "src": "1239:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 359,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1239:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1170:88:1"
            },
            "returnParameters": {
              "id": 365,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 364,
                  "mutability": "mutable",
                  "name": "amounts",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 366,
                  "src": "1285:24:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 362,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1285:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 363,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1285:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1284:26:1"
            },
            "scope": 444,
            "src": "1140:171:1",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "18cbafe5",
            "id": 383,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "swapExactTokensForETH",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 378,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 368,
                  "mutability": "mutable",
                  "name": "amountIn",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 383,
                  "src": "1348:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 367,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1348:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 370,
                  "mutability": "mutable",
                  "name": "amountOutMin",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 383,
                  "src": "1368:20:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 369,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1368:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 373,
                  "mutability": "mutable",
                  "name": "path",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 383,
                  "src": "1392:23:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 371,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1392:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 372,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1392:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 375,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 383,
                  "src": "1419:10:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 374,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1419:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 377,
                  "mutability": "mutable",
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 383,
                  "src": "1433:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 376,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1433:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1344:108:1"
            },
            "returnParameters": {
              "id": 382,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 381,
                  "mutability": "mutable",
                  "name": "amounts",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 383,
                  "src": "1471:24:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 379,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1471:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 380,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1471:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1470:26:1"
            },
            "scope": 444,
            "src": "1314:183:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "38ed1739",
            "id": 400,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "swapExactTokensForTokens",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 395,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 385,
                  "mutability": "mutable",
                  "name": "amountIn",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 400,
                  "src": "1537:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 384,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1537:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 387,
                  "mutability": "mutable",
                  "name": "amountOutMin",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 400,
                  "src": "1557:20:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 386,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1557:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 390,
                  "mutability": "mutable",
                  "name": "path",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 400,
                  "src": "1581:23:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 388,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1581:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 389,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1581:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 392,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 400,
                  "src": "1608:10:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 391,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1608:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 394,
                  "mutability": "mutable",
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 400,
                  "src": "1622:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 393,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1622:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1533:108:1"
            },
            "returnParameters": {
              "id": 399,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 398,
                  "mutability": "mutable",
                  "name": "amounts",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 400,
                  "src": "1660:24:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 396,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1660:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 397,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1660:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1659:26:1"
            },
            "scope": 444,
            "src": "1500:186:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "ad5c4648",
            "id": 405,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "WETH",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 401,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1702:2:1"
            },
            "returnParameters": {
              "id": 404,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 403,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 405,
                  "src": "1728:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 402,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1728:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1727:9:1"
            },
            "scope": 444,
            "src": "1689:48:1",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "c45a0155",
            "id": 410,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "factory",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 406,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1756:2:1"
            },
            "returnParameters": {
              "id": 409,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 408,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 410,
                  "src": "1782:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 407,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1782:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1781:9:1"
            },
            "scope": 444,
            "src": "1740:51:1",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "ad615dec",
            "id": 421,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "quote",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 417,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 412,
                  "mutability": "mutable",
                  "name": "amountA",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 421,
                  "src": "1812:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 411,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1812:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 414,
                  "mutability": "mutable",
                  "name": "reserveA",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 421,
                  "src": "1831:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 413,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1831:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 416,
                  "mutability": "mutable",
                  "name": "reserveB",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 421,
                  "src": "1851:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 415,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1851:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1808:62:1"
            },
            "returnParameters": {
              "id": 420,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 419,
                  "mutability": "mutable",
                  "name": "amountB",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 421,
                  "src": "1894:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 418,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1894:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1893:17:1"
            },
            "scope": 444,
            "src": "1794:117:1",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "85f8c259",
            "id": 432,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getAmountIn",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 428,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 423,
                  "mutability": "mutable",
                  "name": "amountOut",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 432,
                  "src": "1938:17:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 422,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1938:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 425,
                  "mutability": "mutable",
                  "name": "reserveIn",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 432,
                  "src": "1959:17:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 424,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1959:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 427,
                  "mutability": "mutable",
                  "name": "reserveOut",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 432,
                  "src": "1980:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 426,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1980:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1934:67:1"
            },
            "returnParameters": {
              "id": 431,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 430,
                  "mutability": "mutable",
                  "name": "amountIn",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 432,
                  "src": "2025:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 429,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2025:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2024:18:1"
            },
            "scope": 444,
            "src": "1914:129:1",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "054d50d4",
            "id": 443,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getAmountOut",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 439,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 434,
                  "mutability": "mutable",
                  "name": "amountI",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 443,
                  "src": "2071:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 433,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2071:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 436,
                  "mutability": "mutable",
                  "name": "reserveIn",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 443,
                  "src": "2090:17:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 435,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2090:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 438,
                  "mutability": "mutable",
                  "name": "reserveOut",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 443,
                  "src": "2111:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 437,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2111:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2067:65:1"
            },
            "returnParameters": {
              "id": 442,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 441,
                  "mutability": "mutable",
                  "name": "amountOut",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 443,
                  "src": "2156:17:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 440,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2156:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2155:19:1"
            },
            "scope": 444,
            "src": "2046:129:1",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 552,
        "src": "1119:1058:1"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 454,
        "linearizedBaseContracts": [
          454
        ],
        "name": "UniswapFactory",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "functionSelector": "e6a43905",
            "id": 453,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getPair",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 449,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 446,
                  "mutability": "mutable",
                  "name": "tokenA",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 453,
                  "src": "2224:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 445,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2224:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 448,
                  "mutability": "mutable",
                  "name": "tokenB",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 453,
                  "src": "2240:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 447,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2240:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2223:32:1"
            },
            "returnParameters": {
              "id": 452,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 451,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 453,
                  "src": "2285:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 450,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2285:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2284:9:1"
            },
            "scope": 454,
            "src": "2207:87:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 552,
        "src": "2179:117:1"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 469,
        "linearizedBaseContracts": [
          469
        ],
        "name": "UniswapPair",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "functionSelector": "0902f1ac",
            "id": 463,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getReserves",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 455,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2343:2:1"
            },
            "returnParameters": {
              "id": 462,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 457,
                  "mutability": "mutable",
                  "name": "reserve0",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 463,
                  "src": "2379:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint112",
                    "typeString": "uint112"
                  },
                  "typeName": {
                    "id": 456,
                    "name": "uint112",
                    "nodeType": "ElementaryTypeName",
                    "src": "2379:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint112",
                      "typeString": "uint112"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 459,
                  "mutability": "mutable",
                  "name": "reserve1",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 463,
                  "src": "2400:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint112",
                    "typeString": "uint112"
                  },
                  "typeName": {
                    "id": 458,
                    "name": "uint112",
                    "nodeType": "ElementaryTypeName",
                    "src": "2400:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint112",
                      "typeString": "uint112"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 461,
                  "mutability": "mutable",
                  "name": "blockTimestampLast",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 463,
                  "src": "2421:25:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 460,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2421:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2374:76:1"
            },
            "scope": 469,
            "src": "2323:128:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "7464fc3d",
            "id": 468,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "kLast",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 464,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2468:2:1"
            },
            "returnParameters": {
              "id": 467,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 466,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 468,
                  "src": "2494:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 465,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2494:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2493:9:1"
            },
            "scope": 469,
            "src": "2454:49:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 552,
        "src": "2298:207:1"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 481,
        "linearizedBaseContracts": [
          481
        ],
        "name": "Reserve",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "functionSelector": "a59ac6dd",
            "id": 480,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "buy",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 476,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 471,
                  "mutability": "mutable",
                  "name": "_buyWith",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 480,
                  "src": "2544:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 470,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2544:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 473,
                  "mutability": "mutable",
                  "name": "_tokenAmount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 480,
                  "src": "2564:20:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 472,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2564:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 475,
                  "mutability": "mutable",
                  "name": "_minReturn",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 480,
                  "src": "2588:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 474,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2588:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2540:69:1"
            },
            "returnParameters": {
              "id": 479,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 478,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 480,
                  "src": "2628:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 477,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2628:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2627:9:1"
            },
            "scope": 481,
            "src": "2528:109:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 552,
        "src": "2507:132:1"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 513,
        "linearizedBaseContracts": [
          513
        ],
        "name": "IIdentity",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "functionSelector": "3af32abf",
            "id": 488,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "isWhitelisted",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 484,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 483,
                  "mutability": "mutable",
                  "name": "user",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 488,
                  "src": "2687:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 482,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2687:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2686:14:1"
            },
            "returnParameters": {
              "id": 487,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 486,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 488,
                  "src": "2724:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 485,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2724:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2723:6:1"
            },
            "scope": 513,
            "src": "2664:66:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "1b027099",
            "id": 495,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "addWhitelistedWithDID",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 493,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 490,
                  "mutability": "mutable",
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 495,
                  "src": "2764:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 489,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2764:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 492,
                  "mutability": "mutable",
                  "name": "did",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 495,
                  "src": "2781:17:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 491,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2781:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2763:36:1"
            },
            "returnParameters": {
              "id": 494,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2808:0:1"
            },
            "scope": 513,
            "src": "2733:76:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "291d9549",
            "id": 500,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "removeWhitelisted",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 498,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 497,
                  "mutability": "mutable",
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 500,
                  "src": "2839:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 496,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2839:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2838:17:1"
            },
            "returnParameters": {
              "id": 499,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2864:0:1"
            },
            "scope": 513,
            "src": "2812:53:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "2b32e46c",
            "id": 507,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "addIdentityAdmin",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 503,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 502,
                  "mutability": "mutable",
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 507,
                  "src": "2894:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 501,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2894:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2893:17:1"
            },
            "returnParameters": {
              "id": 506,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 505,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 507,
                  "src": "2929:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 504,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2929:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2928:6:1"
            },
            "scope": 513,
            "src": "2868:67:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "086cfca8",
            "id": 512,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setAvatar",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 510,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 509,
                  "mutability": "mutable",
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 512,
                  "src": "2957:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 508,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2957:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2956:17:1"
            },
            "returnParameters": {
              "id": 511,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2982:0:1"
            },
            "scope": 513,
            "src": "2938:45:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 552,
        "src": "2641:344:1"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 519,
        "linearizedBaseContracts": [
          519
        ],
        "name": "UBIScheme",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "functionSelector": "5c9302c9",
            "id": 518,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "currentDay",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 514,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3029:2:1"
            },
            "returnParameters": {
              "id": 517,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 516,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 518,
                  "src": "3055:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 515,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3055:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3054:9:1"
            },
            "scope": 519,
            "src": "3010:54:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 552,
        "src": "2987:79:1"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 551,
        "linearizedBaseContracts": [
          551
        ],
        "name": "ProxyAdmin",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "functionSelector": "204e1c7a",
            "id": 526,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getProxyImplementation",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 522,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 521,
                  "mutability": "mutable",
                  "name": "proxy",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 526,
                  "src": "3124:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 520,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3124:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3123:15:1"
            },
            "returnParameters": {
              "id": 525,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 524,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 526,
                  "src": "3168:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 523,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3168:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3167:9:1"
            },
            "scope": 551,
            "src": "3092:85:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "f3b7dead",
            "id": 533,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getProxyAdmin",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 529,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 528,
                  "mutability": "mutable",
                  "name": "proxy",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 533,
                  "src": "3203:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 527,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3203:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3202:15:1"
            },
            "returnParameters": {
              "id": 532,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 531,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 533,
                  "src": "3241:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 530,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3241:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3240:9:1"
            },
            "scope": 551,
            "src": "3180:70:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "99a88ec4",
            "id": 540,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "upgrade",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 538,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 535,
                  "mutability": "mutable",
                  "name": "proxy",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 540,
                  "src": "3270:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 534,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3270:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 537,
                  "mutability": "mutable",
                  "name": "implementation",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 540,
                  "src": "3285:22:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 536,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3285:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3269:39:1"
            },
            "returnParameters": {
              "id": 539,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3317:0:1"
            },
            "scope": 551,
            "src": "3253:65:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "8da5cb5b",
            "id": 545,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "owner",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 541,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3335:2:1"
            },
            "returnParameters": {
              "id": 544,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 543,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 545,
                  "src": "3361:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 542,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3361:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3360:9:1"
            },
            "scope": 551,
            "src": "3321:49:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "f2fde38b",
            "id": 550,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "transferOwnership",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 548,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 547,
                  "mutability": "mutable",
                  "name": "newOwner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 550,
                  "src": "3400:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 546,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3400:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3399:18:1"
            },
            "returnParameters": {
              "id": 549,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3426:0:1"
            },
            "scope": 551,
            "src": "3373:54:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 552,
        "src": "3068:361:1"
      }
    ],
    "src": "33:3397:1"
  },
  "legacyAST": {
    "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/upgradables/contracts/Interfaces.sol",
    "exportedSymbols": {
      "GoodDollar": [
        330
      ],
      "IIdentity": [
        513
      ],
      "ProxyAdmin": [
        551
      ],
      "Reserve": [
        481
      ],
      "Staking": [
        351
      ],
      "UBIScheme": [
        519
      ],
      "Uniswap": [
        444
      ],
      "UniswapFactory": [
        454
      ],
      "UniswapPair": [
        469
      ],
      "cERC20": [
        309
      ]
    },
    "id": 552,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 258,
        "literals": [
          "solidity",
          ">=",
          "0.6"
        ],
        "nodeType": "PragmaDirective",
        "src": "33:22:1"
      },
      {
        "id": 259,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "57:33:1"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 309,
        "linearizedBaseContracts": [
          309
        ],
        "name": "cERC20",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "functionSelector": "a0712d68",
            "id": 266,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "mint",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 262,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 261,
                  "mutability": "mutable",
                  "name": "mintAmount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 266,
                  "src": "126:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 260,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "126:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "125:20:1"
            },
            "returnParameters": {
              "id": 265,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 264,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 266,
                  "src": "164:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 263,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "164:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "163:9:1"
            },
            "scope": 309,
            "src": "112:61:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "852a12e3",
            "id": 273,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "redeemUnderlying",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 269,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 268,
                  "mutability": "mutable",
                  "name": "mintAmount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 273,
                  "src": "202:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 267,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "202:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "201:20:1"
            },
            "returnParameters": {
              "id": 272,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 271,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 273,
                  "src": "240:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 270,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "240:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "239:9:1"
            },
            "scope": 309,
            "src": "176:73:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "bd6d894d",
            "id": 278,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "exchangeRateCurrent",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 274,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "280:2:1"
            },
            "returnParameters": {
              "id": 277,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 276,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 278,
                  "src": "301:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 275,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "301:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "300:9:1"
            },
            "scope": 309,
            "src": "252:58:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "182df0f5",
            "id": 283,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "exchangeRateStored",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 279,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "340:2:1"
            },
            "returnParameters": {
              "id": 282,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 281,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 283,
                  "src": "366:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 280,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "366:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "365:9:1"
            },
            "scope": 309,
            "src": "313:62:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "70a08231",
            "id": 290,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "balanceOf",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 286,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 285,
                  "mutability": "mutable",
                  "name": "addr",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 290,
                  "src": "397:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 284,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "397:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "396:14:1"
            },
            "returnParameters": {
              "id": 289,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 288,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 290,
                  "src": "434:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 287,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "434:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "433:9:1"
            },
            "scope": 309,
            "src": "378:65:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "a9059cbb",
            "id": 299,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "transfer",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 295,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 292,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 299,
                  "src": "464:10:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 291,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "464:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 294,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 299,
                  "src": "476:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 293,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "476:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "463:28:1"
            },
            "returnParameters": {
              "id": 298,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 297,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 299,
                  "src": "510:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 296,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "510:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "509:6:1"
            },
            "scope": 309,
            "src": "446:70:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "095ea7b3",
            "id": 308,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "approve",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 304,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 301,
                  "mutability": "mutable",
                  "name": "spender",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 308,
                  "src": "536:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 300,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "536:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 303,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 308,
                  "src": "553:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 302,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "553:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "535:33:1"
            },
            "returnParameters": {
              "id": 307,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 306,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 308,
                  "src": "587:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 305,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "587:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "586:6:1"
            },
            "scope": 309,
            "src": "519:74:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 552,
        "src": "92:503:1"
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 310,
              "name": "cERC20",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 309,
              "src": "621:6:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_cERC20_$309",
                "typeString": "contract cERC20"
              }
            },
            "id": 311,
            "nodeType": "InheritanceSpecifier",
            "src": "621:6:1"
          }
        ],
        "contractDependencies": [
          309
        ],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 330,
        "linearizedBaseContracts": [
          330,
          309
        ],
        "name": "GoodDollar",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "functionSelector": "d5a06d4c",
            "id": 320,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getFees",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 314,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 313,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 320,
                  "src": "648:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 312,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "648:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "647:15:1"
            },
            "returnParameters": {
              "id": 319,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 316,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 320,
                  "src": "686:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 315,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "686:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 318,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 320,
                  "src": "695:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 317,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "695:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "685:15:1"
            },
            "scope": 330,
            "src": "631:70:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "40c10f19",
            "id": 329,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "mint",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 325,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 322,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 329,
                  "src": "718:10:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 321,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "718:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 324,
                  "mutability": "mutable",
                  "name": "mintAmount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 329,
                  "src": "730:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 323,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "730:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "717:32:1"
            },
            "returnParameters": {
              "id": 328,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 327,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 329,
                  "src": "768:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 326,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "768:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "767:9:1"
            },
            "scope": 330,
            "src": "704:73:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 552,
        "src": "597:182:1"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 351,
        "linearizedBaseContracts": [
          351
        ],
        "name": "Staking",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "Staking.Staker",
            "id": 335,
            "members": [
              {
                "constant": false,
                "id": 332,
                "mutability": "mutable",
                "name": "stakedDAI",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 335,
                "src": "847:17:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 331,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "847:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 334,
                "mutability": "mutable",
                "name": "lastStake",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 335,
                "src": "937:17:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 333,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "937:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Staker",
            "nodeType": "StructDefinition",
            "scope": 351,
            "src": "802:156:1",
            "visibility": "public"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "64aab239",
            "id": 340,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "stakeDAI",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 338,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 337,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 340,
                  "src": "979:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 336,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "979:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "978:16:1"
            },
            "returnParameters": {
              "id": 339,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1003:0:1"
            },
            "scope": 351,
            "src": "961:43:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "bed9d861",
            "id": 343,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "withdrawStake",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 341,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1029:2:1"
            },
            "returnParameters": {
              "id": 342,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1040:0:1"
            },
            "scope": 351,
            "src": "1007:34:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "9168ae72",
            "id": 350,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "stakers",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 346,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 345,
                  "mutability": "mutable",
                  "name": "staker",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 350,
                  "src": "1061:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 344,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1061:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1060:16:1"
            },
            "returnParameters": {
              "id": 349,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 348,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 350,
                  "src": "1100:13:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Staker_$335_memory_ptr",
                    "typeString": "struct Staking.Staker"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 347,
                    "name": "Staker",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 335,
                    "src": "1100:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Staker_$335_storage_ptr",
                      "typeString": "struct Staking.Staker"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1099:15:1"
            },
            "scope": 351,
            "src": "1044:71:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 552,
        "src": "781:336:1"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 444,
        "linearizedBaseContracts": [
          444
        ],
        "name": "Uniswap",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "functionSelector": "7ff36ab5",
            "id": 366,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "swapExactETHForTokens",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 361,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 353,
                  "mutability": "mutable",
                  "name": "amountOutMin",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 366,
                  "src": "1174:20:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 352,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1174:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 356,
                  "mutability": "mutable",
                  "name": "path",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 366,
                  "src": "1198:23:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 354,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1198:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 355,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1198:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 358,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 366,
                  "src": "1225:10:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 357,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1225:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 360,
                  "mutability": "mutable",
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 366,
                  "src": "1239:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 359,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1239:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1170:88:1"
            },
            "returnParameters": {
              "id": 365,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 364,
                  "mutability": "mutable",
                  "name": "amounts",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 366,
                  "src": "1285:24:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 362,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1285:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 363,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1285:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1284:26:1"
            },
            "scope": 444,
            "src": "1140:171:1",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "18cbafe5",
            "id": 383,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "swapExactTokensForETH",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 378,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 368,
                  "mutability": "mutable",
                  "name": "amountIn",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 383,
                  "src": "1348:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 367,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1348:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 370,
                  "mutability": "mutable",
                  "name": "amountOutMin",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 383,
                  "src": "1368:20:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 369,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1368:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 373,
                  "mutability": "mutable",
                  "name": "path",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 383,
                  "src": "1392:23:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 371,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1392:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 372,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1392:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 375,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 383,
                  "src": "1419:10:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 374,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1419:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 377,
                  "mutability": "mutable",
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 383,
                  "src": "1433:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 376,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1433:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1344:108:1"
            },
            "returnParameters": {
              "id": 382,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 381,
                  "mutability": "mutable",
                  "name": "amounts",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 383,
                  "src": "1471:24:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 379,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1471:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 380,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1471:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1470:26:1"
            },
            "scope": 444,
            "src": "1314:183:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "38ed1739",
            "id": 400,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "swapExactTokensForTokens",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 395,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 385,
                  "mutability": "mutable",
                  "name": "amountIn",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 400,
                  "src": "1537:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 384,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1537:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 387,
                  "mutability": "mutable",
                  "name": "amountOutMin",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 400,
                  "src": "1557:20:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 386,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1557:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 390,
                  "mutability": "mutable",
                  "name": "path",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 400,
                  "src": "1581:23:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 388,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1581:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 389,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1581:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 392,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 400,
                  "src": "1608:10:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 391,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1608:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 394,
                  "mutability": "mutable",
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 400,
                  "src": "1622:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 393,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1622:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1533:108:1"
            },
            "returnParameters": {
              "id": 399,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 398,
                  "mutability": "mutable",
                  "name": "amounts",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 400,
                  "src": "1660:24:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 396,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1660:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 397,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1660:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1659:26:1"
            },
            "scope": 444,
            "src": "1500:186:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "ad5c4648",
            "id": 405,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "WETH",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 401,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1702:2:1"
            },
            "returnParameters": {
              "id": 404,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 403,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 405,
                  "src": "1728:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 402,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1728:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1727:9:1"
            },
            "scope": 444,
            "src": "1689:48:1",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "c45a0155",
            "id": 410,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "factory",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 406,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1756:2:1"
            },
            "returnParameters": {
              "id": 409,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 408,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 410,
                  "src": "1782:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 407,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1782:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1781:9:1"
            },
            "scope": 444,
            "src": "1740:51:1",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "ad615dec",
            "id": 421,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "quote",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 417,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 412,
                  "mutability": "mutable",
                  "name": "amountA",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 421,
                  "src": "1812:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 411,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1812:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 414,
                  "mutability": "mutable",
                  "name": "reserveA",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 421,
                  "src": "1831:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 413,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1831:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 416,
                  "mutability": "mutable",
                  "name": "reserveB",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 421,
                  "src": "1851:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 415,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1851:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1808:62:1"
            },
            "returnParameters": {
              "id": 420,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 419,
                  "mutability": "mutable",
                  "name": "amountB",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 421,
                  "src": "1894:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 418,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1894:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1893:17:1"
            },
            "scope": 444,
            "src": "1794:117:1",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "85f8c259",
            "id": 432,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getAmountIn",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 428,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 423,
                  "mutability": "mutable",
                  "name": "amountOut",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 432,
                  "src": "1938:17:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 422,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1938:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 425,
                  "mutability": "mutable",
                  "name": "reserveIn",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 432,
                  "src": "1959:17:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 424,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1959:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 427,
                  "mutability": "mutable",
                  "name": "reserveOut",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 432,
                  "src": "1980:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 426,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1980:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1934:67:1"
            },
            "returnParameters": {
              "id": 431,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 430,
                  "mutability": "mutable",
                  "name": "amountIn",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 432,
                  "src": "2025:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 429,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2025:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2024:18:1"
            },
            "scope": 444,
            "src": "1914:129:1",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "054d50d4",
            "id": 443,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getAmountOut",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 439,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 434,
                  "mutability": "mutable",
                  "name": "amountI",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 443,
                  "src": "2071:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 433,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2071:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 436,
                  "mutability": "mutable",
                  "name": "reserveIn",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 443,
                  "src": "2090:17:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 435,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2090:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 438,
                  "mutability": "mutable",
                  "name": "reserveOut",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 443,
                  "src": "2111:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 437,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2111:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2067:65:1"
            },
            "returnParameters": {
              "id": 442,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 441,
                  "mutability": "mutable",
                  "name": "amountOut",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 443,
                  "src": "2156:17:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 440,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2156:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2155:19:1"
            },
            "scope": 444,
            "src": "2046:129:1",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 552,
        "src": "1119:1058:1"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 454,
        "linearizedBaseContracts": [
          454
        ],
        "name": "UniswapFactory",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "functionSelector": "e6a43905",
            "id": 453,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getPair",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 449,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 446,
                  "mutability": "mutable",
                  "name": "tokenA",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 453,
                  "src": "2224:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 445,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2224:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 448,
                  "mutability": "mutable",
                  "name": "tokenB",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 453,
                  "src": "2240:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 447,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2240:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2223:32:1"
            },
            "returnParameters": {
              "id": 452,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 451,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 453,
                  "src": "2285:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 450,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2285:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2284:9:1"
            },
            "scope": 454,
            "src": "2207:87:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 552,
        "src": "2179:117:1"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 469,
        "linearizedBaseContracts": [
          469
        ],
        "name": "UniswapPair",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "functionSelector": "0902f1ac",
            "id": 463,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getReserves",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 455,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2343:2:1"
            },
            "returnParameters": {
              "id": 462,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 457,
                  "mutability": "mutable",
                  "name": "reserve0",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 463,
                  "src": "2379:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint112",
                    "typeString": "uint112"
                  },
                  "typeName": {
                    "id": 456,
                    "name": "uint112",
                    "nodeType": "ElementaryTypeName",
                    "src": "2379:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint112",
                      "typeString": "uint112"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 459,
                  "mutability": "mutable",
                  "name": "reserve1",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 463,
                  "src": "2400:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint112",
                    "typeString": "uint112"
                  },
                  "typeName": {
                    "id": 458,
                    "name": "uint112",
                    "nodeType": "ElementaryTypeName",
                    "src": "2400:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint112",
                      "typeString": "uint112"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 461,
                  "mutability": "mutable",
                  "name": "blockTimestampLast",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 463,
                  "src": "2421:25:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 460,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2421:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2374:76:1"
            },
            "scope": 469,
            "src": "2323:128:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "7464fc3d",
            "id": 468,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "kLast",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 464,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2468:2:1"
            },
            "returnParameters": {
              "id": 467,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 466,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 468,
                  "src": "2494:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 465,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2494:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2493:9:1"
            },
            "scope": 469,
            "src": "2454:49:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 552,
        "src": "2298:207:1"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 481,
        "linearizedBaseContracts": [
          481
        ],
        "name": "Reserve",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "functionSelector": "a59ac6dd",
            "id": 480,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "buy",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 476,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 471,
                  "mutability": "mutable",
                  "name": "_buyWith",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 480,
                  "src": "2544:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 470,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2544:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 473,
                  "mutability": "mutable",
                  "name": "_tokenAmount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 480,
                  "src": "2564:20:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 472,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2564:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 475,
                  "mutability": "mutable",
                  "name": "_minReturn",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 480,
                  "src": "2588:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 474,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2588:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2540:69:1"
            },
            "returnParameters": {
              "id": 479,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 478,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 480,
                  "src": "2628:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 477,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2628:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2627:9:1"
            },
            "scope": 481,
            "src": "2528:109:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 552,
        "src": "2507:132:1"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 513,
        "linearizedBaseContracts": [
          513
        ],
        "name": "IIdentity",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "functionSelector": "3af32abf",
            "id": 488,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "isWhitelisted",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 484,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 483,
                  "mutability": "mutable",
                  "name": "user",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 488,
                  "src": "2687:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 482,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2687:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2686:14:1"
            },
            "returnParameters": {
              "id": 487,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 486,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 488,
                  "src": "2724:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 485,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2724:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2723:6:1"
            },
            "scope": 513,
            "src": "2664:66:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "1b027099",
            "id": 495,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "addWhitelistedWithDID",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 493,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 490,
                  "mutability": "mutable",
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 495,
                  "src": "2764:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 489,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2764:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 492,
                  "mutability": "mutable",
                  "name": "did",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 495,
                  "src": "2781:17:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 491,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2781:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2763:36:1"
            },
            "returnParameters": {
              "id": 494,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2808:0:1"
            },
            "scope": 513,
            "src": "2733:76:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "291d9549",
            "id": 500,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "removeWhitelisted",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 498,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 497,
                  "mutability": "mutable",
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 500,
                  "src": "2839:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 496,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2839:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2838:17:1"
            },
            "returnParameters": {
              "id": 499,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2864:0:1"
            },
            "scope": 513,
            "src": "2812:53:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "2b32e46c",
            "id": 507,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "addIdentityAdmin",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 503,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 502,
                  "mutability": "mutable",
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 507,
                  "src": "2894:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 501,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2894:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2893:17:1"
            },
            "returnParameters": {
              "id": 506,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 505,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 507,
                  "src": "2929:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 504,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2929:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2928:6:1"
            },
            "scope": 513,
            "src": "2868:67:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "086cfca8",
            "id": 512,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setAvatar",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 510,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 509,
                  "mutability": "mutable",
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 512,
                  "src": "2957:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 508,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2957:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2956:17:1"
            },
            "returnParameters": {
              "id": 511,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2982:0:1"
            },
            "scope": 513,
            "src": "2938:45:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 552,
        "src": "2641:344:1"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 519,
        "linearizedBaseContracts": [
          519
        ],
        "name": "UBIScheme",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "functionSelector": "5c9302c9",
            "id": 518,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "currentDay",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 514,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3029:2:1"
            },
            "returnParameters": {
              "id": 517,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 516,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 518,
                  "src": "3055:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 515,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3055:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3054:9:1"
            },
            "scope": 519,
            "src": "3010:54:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 552,
        "src": "2987:79:1"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 551,
        "linearizedBaseContracts": [
          551
        ],
        "name": "ProxyAdmin",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "functionSelector": "204e1c7a",
            "id": 526,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getProxyImplementation",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 522,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 521,
                  "mutability": "mutable",
                  "name": "proxy",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 526,
                  "src": "3124:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 520,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3124:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3123:15:1"
            },
            "returnParameters": {
              "id": 525,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 524,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 526,
                  "src": "3168:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 523,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3168:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3167:9:1"
            },
            "scope": 551,
            "src": "3092:85:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "f3b7dead",
            "id": 533,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getProxyAdmin",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 529,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 528,
                  "mutability": "mutable",
                  "name": "proxy",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 533,
                  "src": "3203:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 527,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3203:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3202:15:1"
            },
            "returnParameters": {
              "id": 532,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 531,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 533,
                  "src": "3241:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 530,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3241:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3240:9:1"
            },
            "scope": 551,
            "src": "3180:70:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "99a88ec4",
            "id": 540,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "upgrade",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 538,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 535,
                  "mutability": "mutable",
                  "name": "proxy",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 540,
                  "src": "3270:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 534,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3270:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 537,
                  "mutability": "mutable",
                  "name": "implementation",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 540,
                  "src": "3285:22:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 536,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3285:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3269:39:1"
            },
            "returnParameters": {
              "id": 539,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3317:0:1"
            },
            "scope": 551,
            "src": "3253:65:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "8da5cb5b",
            "id": 545,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "owner",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 541,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3335:2:1"
            },
            "returnParameters": {
              "id": 544,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 543,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 545,
                  "src": "3361:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 542,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3361:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3360:9:1"
            },
            "scope": 551,
            "src": "3321:49:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "f2fde38b",
            "id": 550,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "transferOwnership",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 548,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 547,
                  "mutability": "mutable",
                  "name": "newOwner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 550,
                  "src": "3400:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 546,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3400:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3399:18:1"
            },
            "returnParameters": {
              "id": 549,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3426:0:1"
            },
            "scope": 551,
            "src": "3373:54:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 552,
        "src": "3068:361:1"
      }
    ],
    "src": "33:3397:1"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.12+commit.27d51765.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.3.0",
  "updatedAt": "2021-01-17T13:45:26.978Z",
  "devdoc": {
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}