{
    "contractName": "PairUniswapV2",
    "abi": [
        {
            "stateMutability": "payable",
            "type": "receive"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "input",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "internalType": "bytes",
                    "name": "data",
                    "type": "bytes"
                }
            ],
            "name": "swap",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "input",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amountIn",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes",
                    "name": "data",
                    "type": "bytes"
                }
            ],
            "name": "getOutputAmount",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "amountOut",
                    "type": "uint256"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "metadata": "{\"compiler\":{\"version\":\"0.6.8+commit.0bbfe453\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"input\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"getOutputAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"input\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"project:/contracts/swappa/PairUniswapV2.sol\":\"PairUniswapV2\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0xdb26cbf4d028490f49831a7865c2fe1b28db44b535ca8d343785a3b768aae183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://840b14ce0315c47d49ba328f1f9fa7654ded1c9e1559e6c5e777a7b2dc28bf0a\",\"dweb:/ipfs/QmTLLabn4wcfGro9LEmUXUN2nwKqZSotXMvjDCLXEnLtZP\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x9a9cf02622cd7a64261b10534fc3260449da25c98c9e96d1b4ae8110a20e5806\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2df142592d1dc267d9549049ee3317fa190d2f87eaa565f86ab05ec83f7ab8f5\",\"dweb:/ipfs/QmSkJtcfWo7c42KnL5hho6GFxK6HRNV91XABx1P7xDtfLV\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x91e0bd6a6762d2a1700dab0849de8422611355100576c4beef1e80d82a4104a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://73bbd77af0a8b07255d2ffa20728bcf13b116007c9ddac5d37046cfabb0e1e02\",\"dweb:/ipfs/QmRgZgWCWCSMTTaok6o4QvWA6MgB4goS8qpb3sN7bAvaZ9\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5c26b39d26f7ed489e555d955dcd3e01872972e71fdd1528e93ec164e4f23385\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efdc632af6960cf865dbc113665ea1f5b90eab75cc40ec062b2f6ae6da582017\",\"dweb:/ipfs/QmfAZFDuG62vxmAN9DnXApv7e7PMzPqi4RkqqZHLMSQiY5\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf5fa8cbdffa5ef8be49b246b5628facc30b71707e78a45d80d93b64eff3fe390\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://774e78a9ff32792cc95db4d2ceaf3a7965bb7f0bea5e6cb7cff182b450d44b37\",\"dweb:/ipfs/QmRRMC4uj7eAcLW7chynA3sNEYULMFazdLwQHKHQPyzAbA\"]},\"project:/contracts/interfaces/uniswap/IUniswapV2Pair.sol\":{\"keccak256\":\"0xe89bf881b5677223429ad431a0e9b4028fedae3b10bc6e1581daa0b8a8a8b9b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://83939573d0b85183a7c5fa6406581e396a5d9ad30758ba776294a0b33fa7a8e5\",\"dweb:/ipfs/QmQci9HzqXcMTSHDBjp9ZEVUfwcJdHaE63Pzafux7Vp61Y\"]},\"project:/contracts/swappa/ISwappaPairV1.sol\":{\"keccak256\":\"0x3ad68981bda91ed83c5e9ee8617f08bb5e208208477fb755cc77077f127010ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e4390b1bebc39f58bff34b9099a646ead67cef27b722ef61548487251cca719\",\"dweb:/ipfs/QmRWEuYyjHaS957VKWtTfDpzfqkXb2bvEsS33meAC76ZuU\"]},\"project:/contracts/swappa/PairUniswapV2.sol\":{\"keccak256\":\"0x371ef855a16bbb48fd7cc559cb72efceb016b2cc0b7f55e267f749fa056002b7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af37ec103ce503b262126f76072dba1bc4e1eda47aee50a1eb31c9e50db5499b\",\"dweb:/ipfs/QmNZSqUPBhTx5oobiCv8FFctVH5mgPVkdJTx1QKr9RQBig\"]}},\"version\":1}",
    "bytecode": "0x608060405234801561001057600080fd5b50610c91806100206000396000f3fe60806040526004361061002d5760003560e01c806332ef8314146100395780637eace892146100e657610034565b3661003457005b600080fd5b34801561004557600080fd5b506100e46004803603608081101561005c57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101358216926040820135909216918101906080810160608201356401000000008111156100a557600080fd5b8201836020820111156100b757600080fd5b803590602001918460018302840111640100000000831117156100d957600080fd5b5090925090506101a2565b005b3480156100f257600080fd5b506101906004803603608081101561010957600080fd5b73ffffffffffffffffffffffffffffffffffffffff82358116926020810135909116916040820135919081019060808101606082013564010000000081111561015157600080fd5b82018360208201111561016357600080fd5b8035906020019184600183028401116401000000008311171561018557600080fd5b50909250905061076f565b60408051918252519081900360200190f35b6000806101e484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061094b92505050565b9150915060008773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561026757600080fd5b505afa15801561027b573d6000803e3d6000fd5b505050506040513d602081101561029157600080fd5b5051604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018490529151929350908a169163a9059cbb916044808201926020929091908290030181600087803b15801561030f57600080fd5b505af1158015610323573d6000803e3d6000fd5b505050506040513d602081101561033957600080fd5b50516103a657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f50616972556e697377617056323a207472616e73666572206661696c65642100604482015290519081900360640190fd5b60008390506000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156103f457600080fd5b505afa158015610408573d6000803e3d6000fd5b505050506040513d606081101561041e57600080fd5b508051602091820151604080517f0dfe168100000000000000000000000000000000000000000000000000000000815290516dffffffffffffffffffffffffffff938416965092909116935073ffffffffffffffffffffffffffffffffffffffff808f169390871692630dfe1681926004808201939291829003018186803b1580156104a957600080fd5b505afa1580156104bd573d6000803e3d6000fd5b505050506040513d60208110156104d357600080fd5b505173ffffffffffffffffffffffffffffffffffffffff16141561062c5760006104ff858484896109f2565b6040805160008082526020820190925291925073ffffffffffffffffffffffffffffffffffffffff86169163022c0d9f919084908e906040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156105bf5781810151838201526020016105a7565b50505050905090810190601f1680156105ec5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561060e57600080fd5b505af1158015610622573d6000803e3d6000fd5b5050505050610762565b600061063a858385896109f2565b6040805160008082526020820190925291925073ffffffffffffffffffffffffffffffffffffffff86169163022c0d9f9184918e906040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156106f95781810151838201526020016106e1565b50505050905090810190601f1680156107265780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561074857600080fd5b505af115801561075c573d6000803e3d6000fd5b50505050505b5050505050505050505050565b60008060006107b385858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061094b92505050565b9150915060008290506000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561080557600080fd5b505afa158015610819573d6000803e3d6000fd5b505050506040513d606081101561082f57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691506000808c73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156108d957600080fd5b505afa1580156108ed573d6000803e3d6000fd5b505050506040513d602081101561090357600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161461092757828461092a565b83835b9150915061093a8b8383896109f2565b9d9c50505050505050505050505050565b60008082516015146109be57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f50616972556e697377617056323a20696e76616c696420646174612100000000604482015290519081900360640190fd5b6109e5836014815181106109ce57fe5b01602001516127109060f81c63ffffffff610a5716565b6014939093015193915050565b600080610a05868463ffffffff610aa216565b90506000610a19828663ffffffff610aa216565b90506000610a3f83610a338961271063ffffffff610aa216565b9063ffffffff610b1516565b9050808281610a4a57fe5b0498975050505050505050565b6000610a9983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610b89565b90505b92915050565b600082610ab157506000610a9c565b82820282848281610abe57fe5b0414610a99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610c3b6021913960400191505060405180910390fd5b600082820183811015610a9957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008184841115610c32576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610bf7578181015183820152602001610bdf565b50505050905090810190601f168015610c245780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505090039056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212208932328369d739e1ed2ccc3e291c50b420a120784fd1da996cb2a60d1d7b4ed164736f6c63430006080033",
    "deployedBytecode": "0x60806040526004361061002d5760003560e01c806332ef8314146100395780637eace892146100e657610034565b3661003457005b600080fd5b34801561004557600080fd5b506100e46004803603608081101561005c57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101358216926040820135909216918101906080810160608201356401000000008111156100a557600080fd5b8201836020820111156100b757600080fd5b803590602001918460018302840111640100000000831117156100d957600080fd5b5090925090506101a2565b005b3480156100f257600080fd5b506101906004803603608081101561010957600080fd5b73ffffffffffffffffffffffffffffffffffffffff82358116926020810135909116916040820135919081019060808101606082013564010000000081111561015157600080fd5b82018360208201111561016357600080fd5b8035906020019184600183028401116401000000008311171561018557600080fd5b50909250905061076f565b60408051918252519081900360200190f35b6000806101e484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061094b92505050565b9150915060008773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561026757600080fd5b505afa15801561027b573d6000803e3d6000fd5b505050506040513d602081101561029157600080fd5b5051604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018490529151929350908a169163a9059cbb916044808201926020929091908290030181600087803b15801561030f57600080fd5b505af1158015610323573d6000803e3d6000fd5b505050506040513d602081101561033957600080fd5b50516103a657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f50616972556e697377617056323a207472616e73666572206661696c65642100604482015290519081900360640190fd5b60008390506000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156103f457600080fd5b505afa158015610408573d6000803e3d6000fd5b505050506040513d606081101561041e57600080fd5b508051602091820151604080517f0dfe168100000000000000000000000000000000000000000000000000000000815290516dffffffffffffffffffffffffffff938416965092909116935073ffffffffffffffffffffffffffffffffffffffff808f169390871692630dfe1681926004808201939291829003018186803b1580156104a957600080fd5b505afa1580156104bd573d6000803e3d6000fd5b505050506040513d60208110156104d357600080fd5b505173ffffffffffffffffffffffffffffffffffffffff16141561062c5760006104ff858484896109f2565b6040805160008082526020820190925291925073ffffffffffffffffffffffffffffffffffffffff86169163022c0d9f919084908e906040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156105bf5781810151838201526020016105a7565b50505050905090810190601f1680156105ec5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561060e57600080fd5b505af1158015610622573d6000803e3d6000fd5b5050505050610762565b600061063a858385896109f2565b6040805160008082526020820190925291925073ffffffffffffffffffffffffffffffffffffffff86169163022c0d9f9184918e906040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156106f95781810151838201526020016106e1565b50505050905090810190601f1680156107265780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561074857600080fd5b505af115801561075c573d6000803e3d6000fd5b50505050505b5050505050505050505050565b60008060006107b385858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061094b92505050565b9150915060008290506000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561080557600080fd5b505afa158015610819573d6000803e3d6000fd5b505050506040513d606081101561082f57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691506000808c73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156108d957600080fd5b505afa1580156108ed573d6000803e3d6000fd5b505050506040513d602081101561090357600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161461092757828461092a565b83835b9150915061093a8b8383896109f2565b9d9c50505050505050505050505050565b60008082516015146109be57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f50616972556e697377617056323a20696e76616c696420646174612100000000604482015290519081900360640190fd5b6109e5836014815181106109ce57fe5b01602001516127109060f81c63ffffffff610a5716565b6014939093015193915050565b600080610a05868463ffffffff610aa216565b90506000610a19828663ffffffff610aa216565b90506000610a3f83610a338961271063ffffffff610aa216565b9063ffffffff610b1516565b9050808281610a4a57fe5b0498975050505050505050565b6000610a9983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610b89565b90505b92915050565b600082610ab157506000610a9c565b82820282848281610abe57fe5b0414610a99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610c3b6021913960400191505060405180910390fd5b600082820183811015610a9957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008184841115610c32576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610bf7578181015183820152602001610bdf565b50505050905090810190601f168015610c245780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505090039056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212208932328369d739e1ed2ccc3e291c50b420a120784fd1da996cb2a60d1d7b4ed164736f6c63430006080033",
    "immutableReferences": {},
    "sourceMap": "246:1891:57:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;246:1891:57;;;;;;;",
    "deployedSourceMap": "246:1891:57:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;316:717:57;;5:9:-1;2:2;;;27:1;24;17:12;2:2;316:717:57;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;316:717:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;316:717:57;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;316:717:57;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;316:717:57;;-1:-1:-1;316:717:57;-1:-1:-1;316:717:57;:::i;:::-;;1304:470;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1304:470:57;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;1304:470:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;1304:470:57;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;1304:470:57;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;1304:470:57;;-1:-1:-1;1304:470:57;-1:-1:-1;1304:470:57;:::i;:::-;;;;;;;;;;;;;;;;316:717;421:16;439:9;452:15;462:4;;452:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;452:9:57;;-1:-1:-1;;;452:15:57:i;:::-;420:47;;;;471:16;496:5;490:22;;;521:4;490:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;490:37:57;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;490:37:57;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;490:37:57;543:44;;;;;;:21;:44;;;;;;;;;;;;;;;490:37;;-1:-1:-1;543:21:57;;;;;;:44;;;;;490:37;;543:44;;;;;;;;-1:-1:-1;543:21:57;:44;;;2:2:-1;;;;27:1;24;17:12;2:2;543:44:57;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;543:44:57;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;543:44:57;531:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;630:19;667:8;630:46;;681:13;696;714:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;714:18:57;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;714:18:57;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;714:18:57;;;;;;;;740:13;;;;;;;680:52;;;;;-1:-1:-1;680:52:57;;;;;-1:-1:-1;740:22:57;;;;;:11;;;;;;:13;;;;;714:18;740:13;;;;;;:11;:13;;;2:2:-1;;;;27:1;24;17:12;2:2;740:13:57;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;740:13:57;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;740:13:57;:22;;;736:294;;;769:17;789:51;802:11;815:8;825;835:4;789:12;:51::i;:::-;876:12;;;855:1;876:12;;;;;;;;;769:71;;-1:-1:-1;845:9:57;;;;;;855:1;769:71;;872:2;;845:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;845:44:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;845:44:57;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;845:44:57;;;;736:294;;;;905:17;925:51;938:11;951:8;961;971:4;925:12;:51::i;:::-;1012:12;;;1005:1;1012:12;;;;;;;;;905:71;;-1:-1:-1;981:9:57;;;;;;905:71;;1008:2;;981:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;981:44:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;981:44:57;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;981:44:57;;;;736:294;;316:717;;;;;;;;;;;:::o;1304:470::-;1427:14;1448:16;1466:9;1479:15;1489:4;;1479:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1479:9:57;;-1:-1:-1;;;1479:15:57:i;:::-;1447:47;;;;1498:19;1535:8;1498:46;;1549:13;1564;1582:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1582:18:57;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1582:18:57;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1582:18:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1548:52;;;;;;;;;1605:14;1621:15;1657:5;1640:22;;:4;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1640:13:57;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1640:13:57;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1640:13:57;:22;;;:68;;1689:8;1699;1640:68;;;1666:8;1676;1640:68;1604:104;;;;1719:51;1732:8;1742:9;1753:10;1765:4;1719:12;:51::i;:::-;1712:58;1304:470;-1:-1:-1;;;;;;;;;;;;;1304:470:57:o;1036:265::-;1096:16;1114:8;1136:4;:11;1151:2;1136:17;1128:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1213:32;1235:4;1240:2;1235:8;;;;;;;;;;;;1218:5;;1235:8;;1213:32;:15;:32;:::i;:::-;1290:2;1280:13;;;;1274:20;;1258:40;-1:-1:-1;;1258:40:57:o;1777:326::-;1881:14;;1924:18;:8;1937:4;1924:18;:12;:18;:::i;:::-;1901:41;-1:-1:-1;1946:14:57;1963:31;1901:41;1983:10;1963:31;:19;:31;:::i;:::-;1946:48;-1:-1:-1;1998:16:57;2017:41;2042:15;2017:20;:9;2031:5;2017:20;:13;:20;:::i;:::-;:24;:41;:24;:41;:::i;:::-;1998:60;;2086:11;2074:9;:23;;;;;;;1777:326;-1:-1:-1;;;;;;;;1777:326:57:o;1321:134:1:-;1379:7;1405:43;1409:1;1412;1405:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1398:50;;1321:134;;;;;:::o;2180:459::-;2238:7;2479:6;2475:45;;-1:-1:-1;2508:1:1;2501:8;;2475:45;2542:5;;;2546:1;2542;:5;:1;2565:5;;;;;:10;2557:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;874:176;932:7;963:5;;;986:6;;;;978:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1746:187;1832:7;1867:12;1859:6;;;;1851:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1851:29:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1902:5:1;;;1746:187::o",
    "source": "// SPDX-License-Identifier: MIT\npragma solidity 0.6.8;\n\nimport \"@openzeppelin/contracts/math/SafeMath.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport \"../interfaces/uniswap/IUniswapV2Pair.sol\";\nimport \"./ISwappaPairV1.sol\";\n\ncontract PairUniswapV2 is ISwappaPairV1 {\n\tusing SafeMath for uint;\n\n\tfunction swap(\n\t\taddress input,\n\t\taddress,\n\t\taddress to,\n\t\tbytes calldata data\n\t) external override {\n\t\t(address pairAddr, uint feeK) = parseData(data);\n\t\tuint inputAmount = ERC20(input).balanceOf(address(this));\n\t\trequire(\n\t\t\tERC20(input).transfer(pairAddr, inputAmount),\n\t\t\t\"PairUniswapV2: transfer failed!\");\n\t\tIUniswapV2Pair pair = IUniswapV2Pair(pairAddr);\n\t\t(uint reserve0, uint reserve1,) = pair.getReserves();\n\t\tif (pair.token0() == input) {\n\t\t\tuint outputAmount = getAmountOut(inputAmount, reserve0, reserve1, feeK);\n\t\t\tpair.swap(0, outputAmount, to, new bytes(0));\n\t\t} else {\n\t\t\tuint outputAmount = getAmountOut(inputAmount, reserve1, reserve0, feeK);\n\t\t\tpair.swap(outputAmount, 0, to, new bytes(0));\n\t\t}\n\t}\n\n\tfunction parseData(bytes memory data) private pure returns (address pairAddr, uint fee) {\n\t\trequire(data.length == 21, \"PairUniswapV2: invalid data!\");\n\t\t// fee in bips\n\t\tfee = uint(10000).sub(uint8(data[20]));\n\t\tassembly {\n\t\tpairAddr := mload(add(data, 20))\n\t\t}\n\t}\n\n\tfunction getOutputAmount(\n\t\taddress input,\n\t\taddress,\n\t\tuint amountIn,\n\t\tbytes calldata data\n\t) external override returns (uint amountOut) {\n\t\t(address pairAddr, uint feeK) = parseData(data);\n\t\tIUniswapV2Pair pair = IUniswapV2Pair(pairAddr);\n\t\t(uint reserve0, uint reserve1,) = pair.getReserves();\n\t\t(uint reserveIn, uint reserveOut) = pair.token0() == input ? (reserve0, reserve1) : (reserve1, reserve0);\n\t\treturn getAmountOut(amountIn, reserveIn, reserveOut, feeK);\n\t}\n\n\tfunction getAmountOut(uint amountIn, uint reserveIn, uint reserveOut, uint feeK) internal pure returns (uint amountOut) {\n\t\tuint amountInWithFee = amountIn.mul(feeK);\n\t\tuint numerator = amountInWithFee.mul(reserveOut);\n\t\tuint denominator = reserveIn.mul(10000).add(amountInWithFee);\n\t\tamountOut = numerator / denominator;\n  \t}\n\n\treceive() external payable {}\n}\n",
    "sourcePath": "/home/thezviad_gmail_com/src/swappa/contracts/swappa/PairUniswapV2.sol",
    "ast": {
        "absolutePath": "project:/contracts/swappa/PairUniswapV2.sol",
        "exportedSymbols": {
            "PairUniswapV2": [
                7292
            ]
        },
        "id": 7293,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 7031,
                "literals": [
                    "solidity",
                    "0.6",
                    ".8"
                ],
                "nodeType": "PragmaDirective",
                "src": "32:22:57"
            },
            {
                "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
                "file": "@openzeppelin/contracts/math/SafeMath.sol",
                "id": 7032,
                "nodeType": "ImportDirective",
                "scope": 7293,
                "sourceUnit": 219,
                "src": "56:51:57",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
                "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
                "id": 7033,
                "nodeType": "ImportDirective",
                "scope": 7293,
                "sourceUnit": 726,
                "src": "108:55:57",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "project:/contracts/interfaces/uniswap/IUniswapV2Pair.sol",
                "file": "../interfaces/uniswap/IUniswapV2Pair.sol",
                "id": 7034,
                "nodeType": "ImportDirective",
                "scope": 7293,
                "sourceUnit": 2706,
                "src": "164:50:57",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "project:/contracts/swappa/ISwappaPairV1.sol",
                "file": "./ISwappaPairV1.sol",
                "id": 7035,
                "nodeType": "ImportDirective",
                "scope": 7293,
                "sourceUnit": 5326,
                "src": "215:29:57",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "abstract": false,
                "baseContracts": [
                    {
                        "arguments": null,
                        "baseName": {
                            "contractScope": null,
                            "id": 7036,
                            "name": "ISwappaPairV1",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 5325,
                            "src": "272:13:57",
                            "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ISwappaPairV1_$5325",
                                "typeString": "contract ISwappaPairV1"
                            }
                        },
                        "id": 7037,
                        "nodeType": "InheritanceSpecifier",
                        "src": "272:13:57"
                    }
                ],
                "contractDependencies": [
                    5325
                ],
                "contractKind": "contract",
                "documentation": null,
                "fullyImplemented": true,
                "id": 7292,
                "linearizedBaseContracts": [
                    7292,
                    5325
                ],
                "name": "PairUniswapV2",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "id": 7040,
                        "libraryName": {
                            "contractScope": null,
                            "id": 7038,
                            "name": "SafeMath",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 218,
                            "src": "295:8:57",
                            "typeDescriptions": {
                                "typeIdentifier": "t_contract$_SafeMath_$218",
                                "typeString": "library SafeMath"
                            }
                        },
                        "nodeType": "UsingForDirective",
                        "src": "289:24:57",
                        "typeName": {
                            "id": 7039,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "308:4:57",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        }
                    },
                    {
                        "baseFunctions": [
                            5311
                        ],
                        "body": {
                            "id": 7147,
                            "nodeType": "Block",
                            "src": "416:617:57",
                            "statements": [
                                {
                                    "assignments": [
                                        7053,
                                        7055
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 7053,
                                            "mutability": "mutable",
                                            "name": "pairAddr",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 7147,
                                            "src": "421:16:57",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 7052,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "421:7:57",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 7055,
                                            "mutability": "mutable",
                                            "name": "feeK",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 7147,
                                            "src": "439:9:57",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 7054,
                                                "name": "uint",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "439:4:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 7059,
                                    "initialValue": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "id": 7057,
                                                "name": "data",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7048,
                                                "src": "462:4:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            ],
                                            "id": 7056,
                                            "name": "parseData",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7182,
                                            "src": "452:9:57",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$_t_uint256_$",
                                                "typeString": "function (bytes memory) pure returns (address,uint256)"
                                            }
                                        },
                                        "id": 7058,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "452:15:57",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$",
                                            "typeString": "tuple(address,uint256)"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "420:47:57"
                                },
                                {
                                    "assignments": [
                                        7061
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 7061,
                                            "mutability": "mutable",
                                            "name": "inputAmount",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 7147,
                                            "src": "471:16:57",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 7060,
                                                "name": "uint",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "471:4:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 7071,
                                    "initialValue": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "arguments": [
                                                    {
                                                        "argumentTypes": null,
                                                        "id": 7068,
                                                        "name": "this",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -28,
                                                        "src": "521:4:57",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_PairUniswapV2_$7292",
                                                            "typeString": "contract PairUniswapV2"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_contract$_PairUniswapV2_$7292",
                                                            "typeString": "contract PairUniswapV2"
                                                        }
                                                    ],
                                                    "id": 7067,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "513:7:57",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                    },
                                                    "typeName": {
                                                        "id": 7066,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "513:7:57",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": null,
                                                            "typeString": null
                                                        }
                                                    }
                                                },
                                                "id": 7069,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "513:13:57",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": null,
                                                "arguments": [
                                                    {
                                                        "argumentTypes": null,
                                                        "id": 7063,
                                                        "name": "input",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7042,
                                                        "src": "496:5:57",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 7062,
                                                    "name": "ERC20",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 725,
                                                    "src": "490:5:57",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_ERC20_$725_$",
                                                        "typeString": "type(contract ERC20)"
                                                    }
                                                },
                                                "id": 7064,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "490:12:57",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ERC20_$725",
                                                    "typeString": "contract ERC20"
                                                }
                                            },
                                            "id": 7065,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "balanceOf",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 325,
                                            "src": "490:22:57",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                                "typeString": "function (address) view external returns (uint256)"
                                            }
                                        },
                                        "id": 7070,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "490:37:57",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "471:56:57"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "arguments": [
                                                    {
                                                        "argumentTypes": null,
                                                        "id": 7077,
                                                        "name": "pairAddr",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7053,
                                                        "src": "565:8:57",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    {
                                                        "argumentTypes": null,
                                                        "id": 7078,
                                                        "name": "inputAmount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7061,
                                                        "src": "575:11:57",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": null,
                                                        "arguments": [
                                                            {
                                                                "argumentTypes": null,
                                                                "id": 7074,
                                                                "name": "input",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7042,
                                                                "src": "549:5:57",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 7073,
                                                            "name": "ERC20",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 725,
                                                            "src": "543:5:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_ERC20_$725_$",
                                                                "typeString": "type(contract ERC20)"
                                                            }
                                                        },
                                                        "id": 7075,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "543:12:57",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_ERC20_$725",
                                                            "typeString": "contract ERC20"
                                                        }
                                                    },
                                                    "id": 7076,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "transfer",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 346,
                                                    "src": "543:21:57",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                        "typeString": "function (address,uint256) external returns (bool)"
                                                    }
                                                },
                                                "id": 7079,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "543:44:57",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "hexValue": "50616972556e697377617056323a207472616e73666572206661696c656421",
                                                "id": 7080,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "592:33:57",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_d353c8620131f2c6bbc553953a76ac202fe45ba7cf890cd1a1567214c5b736ab",
                                                    "typeString": "literal_string \"PairUniswapV2: transfer failed!\""
                                                },
                                                "value": "PairUniswapV2: transfer failed!"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_d353c8620131f2c6bbc553953a76ac202fe45ba7cf890cd1a1567214c5b736ab",
                                                    "typeString": "literal_string \"PairUniswapV2: transfer failed!\""
                                                }
                                            ],
                                            "id": 7072,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                -18,
                                                -18
                                            ],
                                            "referencedDeclaration": -18,
                                            "src": "531:7:57",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 7081,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "531:95:57",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7082,
                                    "nodeType": "ExpressionStatement",
                                    "src": "531:95:57"
                                },
                                {
                                    "assignments": [
                                        7084
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 7084,
                                            "mutability": "mutable",
                                            "name": "pair",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 7147,
                                            "src": "630:19:57",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IUniswapV2Pair_$2705",
                                                "typeString": "contract IUniswapV2Pair"
                                            },
                                            "typeName": {
                                                "contractScope": null,
                                                "id": 7083,
                                                "name": "IUniswapV2Pair",
                                                "nodeType": "UserDefinedTypeName",
                                                "referencedDeclaration": 2705,
                                                "src": "630:14:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IUniswapV2Pair_$2705",
                                                    "typeString": "contract IUniswapV2Pair"
                                                }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 7088,
                                    "initialValue": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "id": 7086,
                                                "name": "pairAddr",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7053,
                                                "src": "667:8:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 7085,
                                            "name": "IUniswapV2Pair",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2705,
                                            "src": "652:14:57",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IUniswapV2Pair_$2705_$",
                                                "typeString": "type(contract IUniswapV2Pair)"
                                            }
                                        },
                                        "id": 7087,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "652:24:57",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IUniswapV2Pair_$2705",
                                            "typeString": "contract IUniswapV2Pair"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "630:46:57"
                                },
                                {
                                    "assignments": [
                                        7090,
                                        7092,
                                        null
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 7090,
                                            "mutability": "mutable",
                                            "name": "reserve0",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 7147,
                                            "src": "681:13:57",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 7089,
                                                "name": "uint",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "681:4:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 7092,
                                            "mutability": "mutable",
                                            "name": "reserve1",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 7147,
                                            "src": "696:13:57",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 7091,
                                                "name": "uint",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "696:4:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        null
                                    ],
                                    "id": 7096,
                                    "initialValue": {
                                        "argumentTypes": null,
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                                "argumentTypes": null,
                                                "id": 7093,
                                                "name": "pair",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7084,
                                                "src": "714:4:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IUniswapV2Pair_$2705",
                                                    "typeString": "contract IUniswapV2Pair"
                                                }
                                            },
                                            "id": 7094,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getReserves",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2647,
                                            "src": "714:16:57",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                                                "typeString": "function () view external returns (uint112,uint112,uint32)"
                                            }
                                        },
                                        "id": 7095,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "714:18:57",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                                            "typeString": "tuple(uint112,uint112,uint32)"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "680:52:57"
                                },
                                {
                                    "condition": {
                                        "argumentTypes": null,
                                        "commonType": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        },
                                        "id": 7101,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "argumentTypes": null,
                                            "arguments": [],
                                            "expression": {
                                                "argumentTypes": [],
                                                "expression": {
                                                    "argumentTypes": null,
                                                    "id": 7097,
                                                    "name": "pair",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7084,
                                                    "src": "740:4:57",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IUniswapV2Pair_$2705",
                                                        "typeString": "contract IUniswapV2Pair"
                                                    }
                                                },
                                                "id": 7098,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "token0",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 2633,
                                                "src": "740:11:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                                    "typeString": "function () view external returns (address)"
                                                }
                                            },
                                            "id": 7099,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "740:13:57",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 7100,
                                            "name": "input",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7042,
                                            "src": "757:5:57",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "740:22:57",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "id": 7145,
                                        "nodeType": "Block",
                                        "src": "900:130:57",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    7125
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 7125,
                                                        "mutability": "mutable",
                                                        "name": "outputAmount",
                                                        "nodeType": "VariableDeclaration",
                                                        "overrides": null,
                                                        "scope": 7145,
                                                        "src": "905:17:57",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 7124,
                                                            "name": "uint",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "905:4:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "value": null,
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 7132,
                                                "initialValue": {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                        {
                                                            "argumentTypes": null,
                                                            "id": 7127,
                                                            "name": "inputAmount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7061,
                                                            "src": "938:11:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "argumentTypes": null,
                                                            "id": 7128,
                                                            "name": "reserve1",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7092,
                                                            "src": "951:8:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "argumentTypes": null,
                                                            "id": 7129,
                                                            "name": "reserve0",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7090,
                                                            "src": "961:8:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "argumentTypes": null,
                                                            "id": 7130,
                                                            "name": "feeK",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7055,
                                                            "src": "971:4:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 7126,
                                                        "name": "getAmountOut",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7287,
                                                        "src": "925:12:57",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                            "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256)"
                                                        }
                                                    },
                                                    "id": 7131,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "925:51:57",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "905:71:57"
                                            },
                                            {
                                                "expression": {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                        {
                                                            "argumentTypes": null,
                                                            "id": 7136,
                                                            "name": "outputAmount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7125,
                                                            "src": "991:12:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "argumentTypes": null,
                                                            "hexValue": "30",
                                                            "id": 7137,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "1005:1:57",
                                                            "subdenomination": null,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        },
                                                        {
                                                            "argumentTypes": null,
                                                            "id": 7138,
                                                            "name": "to",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7046,
                                                            "src": "1008:2:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "argumentTypes": null,
                                                            "arguments": [
                                                                {
                                                                    "argumentTypes": null,
                                                                    "hexValue": "30",
                                                                    "id": 7141,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "1022:1:57",
                                                                    "subdenomination": null,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                        "typeString": "int_const 0"
                                                                    },
                                                                    "value": "0"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                        "typeString": "int_const 0"
                                                                    }
                                                                ],
                                                                "id": 7140,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "NewExpression",
                                                                "src": "1012:9:57",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function (uint256) pure returns (bytes memory)"
                                                                },
                                                                "typeName": {
                                                                    "id": 7139,
                                                                    "name": "bytes",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "1016:5:57",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                                        "typeString": "bytes"
                                                                    }
                                                                }
                                                            },
                                                            "id": 7142,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "1012:12:57",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": null,
                                                            "id": 7133,
                                                            "name": "pair",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7084,
                                                            "src": "981:4:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IUniswapV2Pair_$2705",
                                                                "typeString": "contract IUniswapV2Pair"
                                                            }
                                                        },
                                                        "id": 7135,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "swap",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2689,
                                                        "src": "981:9:57",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                                                            "typeString": "function (uint256,uint256,address,bytes memory) external"
                                                        }
                                                    },
                                                    "id": 7143,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "981:44:57",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7144,
                                                "nodeType": "ExpressionStatement",
                                                "src": "981:44:57"
                                            }
                                        ]
                                    },
                                    "id": 7146,
                                    "nodeType": "IfStatement",
                                    "src": "736:294:57",
                                    "trueBody": {
                                        "id": 7123,
                                        "nodeType": "Block",
                                        "src": "764:130:57",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    7103
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 7103,
                                                        "mutability": "mutable",
                                                        "name": "outputAmount",
                                                        "nodeType": "VariableDeclaration",
                                                        "overrides": null,
                                                        "scope": 7123,
                                                        "src": "769:17:57",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 7102,
                                                            "name": "uint",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "769:4:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "value": null,
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 7110,
                                                "initialValue": {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                        {
                                                            "argumentTypes": null,
                                                            "id": 7105,
                                                            "name": "inputAmount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7061,
                                                            "src": "802:11:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "argumentTypes": null,
                                                            "id": 7106,
                                                            "name": "reserve0",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7090,
                                                            "src": "815:8:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "argumentTypes": null,
                                                            "id": 7107,
                                                            "name": "reserve1",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7092,
                                                            "src": "825:8:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "argumentTypes": null,
                                                            "id": 7108,
                                                            "name": "feeK",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7055,
                                                            "src": "835:4:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 7104,
                                                        "name": "getAmountOut",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7287,
                                                        "src": "789:12:57",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                            "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256)"
                                                        }
                                                    },
                                                    "id": 7109,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "789:51:57",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "769:71:57"
                                            },
                                            {
                                                "expression": {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                        {
                                                            "argumentTypes": null,
                                                            "hexValue": "30",
                                                            "id": 7114,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "855:1:57",
                                                            "subdenomination": null,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        },
                                                        {
                                                            "argumentTypes": null,
                                                            "id": 7115,
                                                            "name": "outputAmount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7103,
                                                            "src": "858:12:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "argumentTypes": null,
                                                            "id": 7116,
                                                            "name": "to",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7046,
                                                            "src": "872:2:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "argumentTypes": null,
                                                            "arguments": [
                                                                {
                                                                    "argumentTypes": null,
                                                                    "hexValue": "30",
                                                                    "id": 7119,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "886:1:57",
                                                                    "subdenomination": null,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                        "typeString": "int_const 0"
                                                                    },
                                                                    "value": "0"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                        "typeString": "int_const 0"
                                                                    }
                                                                ],
                                                                "id": 7118,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "NewExpression",
                                                                "src": "876:9:57",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function (uint256) pure returns (bytes memory)"
                                                                },
                                                                "typeName": {
                                                                    "id": 7117,
                                                                    "name": "bytes",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "880:5:57",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                                        "typeString": "bytes"
                                                                    }
                                                                }
                                                            },
                                                            "id": 7120,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "876:12:57",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": null,
                                                            "id": 7111,
                                                            "name": "pair",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7084,
                                                            "src": "845:4:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IUniswapV2Pair_$2705",
                                                                "typeString": "contract IUniswapV2Pair"
                                                            }
                                                        },
                                                        "id": 7113,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "swap",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2689,
                                                        "src": "845:9:57",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                                                            "typeString": "function (uint256,uint256,address,bytes memory) external"
                                                        }
                                                    },
                                                    "id": 7121,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "845:44:57",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7122,
                                                "nodeType": "ExpressionStatement",
                                                "src": "845:44:57"
                                            }
                                        ]
                                    }
                                }
                            ]
                        },
                        "documentation": null,
                        "functionSelector": "32ef8314",
                        "id": 7148,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "swap",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 7050,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "407:8:57"
                        },
                        "parameters": {
                            "id": 7049,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7042,
                                    "mutability": "mutable",
                                    "name": "input",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 7148,
                                    "src": "333:13:57",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7041,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "333:7:57",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7044,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 7148,
                                    "src": "350:7:57",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7043,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "350:7:57",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7046,
                                    "mutability": "mutable",
                                    "name": "to",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 7148,
                                    "src": "361:10:57",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7045,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "361:7:57",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7048,
                                    "mutability": "mutable",
                                    "name": "data",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 7148,
                                    "src": "375:19:57",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 7047,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "375:5:57",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "329:68:57"
                        },
                        "returnParameters": {
                            "id": 7051,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "416:0:57"
                        },
                        "scope": 7292,
                        "src": "316:717:57",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 7181,
                            "nodeType": "Block",
                            "src": "1124:177:57",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "id": 7161,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                        "argumentTypes": null,
                                                        "id": 7158,
                                                        "name": "data",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7150,
                                                        "src": "1136:4:57",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes memory"
                                                        }
                                                    },
                                                    "id": 7159,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "length",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": null,
                                                    "src": "1136:11:57",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                    "argumentTypes": null,
                                                    "hexValue": "3231",
                                                    "id": 7160,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "1151:2:57",
                                                    "subdenomination": null,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_21_by_1",
                                                        "typeString": "int_const 21"
                                                    },
                                                    "value": "21"
                                                },
                                                "src": "1136:17:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "hexValue": "50616972556e697377617056323a20696e76616c6964206461746121",
                                                "id": 7162,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "1155:30:57",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_d18ba8569e2dbcee08c235a74d21e1a2e6a021d1e148a5144fb1d47a71738197",
                                                    "typeString": "literal_string \"PairUniswapV2: invalid data!\""
                                                },
                                                "value": "PairUniswapV2: invalid data!"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_d18ba8569e2dbcee08c235a74d21e1a2e6a021d1e148a5144fb1d47a71738197",
                                                    "typeString": "literal_string \"PairUniswapV2: invalid data!\""
                                                }
                                            ],
                                            "id": 7157,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                -18,
                                                -18
                                            ],
                                            "referencedDeclaration": -18,
                                            "src": "1128:7:57",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 7163,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1128:58:57",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7164,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1128:58:57"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "id": 7178,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "argumentTypes": null,
                                            "id": 7165,
                                            "name": "fee",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7155,
                                            "src": "1207:3:57",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "argumentTypes": null,
                                            "arguments": [
                                                {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                        {
                                                            "argumentTypes": null,
                                                            "baseExpression": {
                                                                "argumentTypes": null,
                                                                "id": 7173,
                                                                "name": "data",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7150,
                                                                "src": "1235:4:57",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                    "typeString": "bytes memory"
                                                                }
                                                            },
                                                            "id": 7175,
                                                            "indexExpression": {
                                                                "argumentTypes": null,
                                                                "hexValue": "3230",
                                                                "id": 7174,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "1240:2:57",
                                                                "subdenomination": null,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_20_by_1",
                                                                    "typeString": "int_const 20"
                                                                },
                                                                "value": "20"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "1235:8:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes1",
                                                                "typeString": "bytes1"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes1",
                                                                "typeString": "bytes1"
                                                            }
                                                        ],
                                                        "id": 7172,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "1229:5:57",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_uint8_$",
                                                            "typeString": "type(uint8)"
                                                        },
                                                        "typeName": {
                                                            "id": 7171,
                                                            "name": "uint8",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "1229:5:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": null,
                                                                "typeString": null
                                                            }
                                                        }
                                                    },
                                                    "id": 7176,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1229:15:57",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                        {
                                                            "argumentTypes": null,
                                                            "hexValue": "3130303030",
                                                            "id": 7168,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "1218:5:57",
                                                            "subdenomination": null,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_10000_by_1",
                                                                "typeString": "int_const 10000"
                                                            },
                                                            "value": "10000"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_rational_10000_by_1",
                                                                "typeString": "int_const 10000"
                                                            }
                                                        ],
                                                        "id": 7167,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "1213:4:57",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_uint256_$",
                                                            "typeString": "type(uint256)"
                                                        },
                                                        "typeName": {
                                                            "id": 7166,
                                                            "name": "uint",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "1213:4:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": null,
                                                                "typeString": null
                                                            }
                                                        }
                                                    },
                                                    "id": 7169,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1213:11:57",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 7170,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sub",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 68,
                                                "src": "1213:15:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                }
                                            },
                                            "id": 7177,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "1213:32:57",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "1207:38:57",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 7179,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1207:38:57"
                                },
                                {
                                    "AST": {
                                        "nodeType": "YulBlock",
                                        "src": "1258:40:57",
                                        "statements": [
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "1262:32:57",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "name": "data",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1284:4:57"
                                                                },
                                                                {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "1290:2:57",
                                                                    "type": "",
                                                                    "value": "20"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "add",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1280:3:57"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "1280:13:57"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mload",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1274:5:57"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "1274:20:57"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "pairAddr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1262:8:57"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "evmVersion": "istanbul",
                                    "externalReferences": [
                                        {
                                            "declaration": 7150,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "1284:4:57",
                                            "valueSize": 1
                                        },
                                        {
                                            "declaration": 7153,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "1262:8:57",
                                            "valueSize": 1
                                        }
                                    ],
                                    "id": 7180,
                                    "nodeType": "InlineAssembly",
                                    "src": "1249:49:57"
                                }
                            ]
                        },
                        "documentation": null,
                        "id": 7182,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "parseData",
                        "nodeType": "FunctionDefinition",
                        "overrides": null,
                        "parameters": {
                            "id": 7151,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7150,
                                    "mutability": "mutable",
                                    "name": "data",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 7182,
                                    "src": "1055:17:57",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 7149,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1055:5:57",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1054:19:57"
                        },
                        "returnParameters": {
                            "id": 7156,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7153,
                                    "mutability": "mutable",
                                    "name": "pairAddr",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 7182,
                                    "src": "1096:16:57",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7152,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1096:7:57",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7155,
                                    "mutability": "mutable",
                                    "name": "fee",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 7182,
                                    "src": "1114:8:57",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 7154,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1114:4:57",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1095:28:57"
                        },
                        "scope": 7292,
                        "src": "1036:265:57",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "private"
                    },
                    {
                        "baseFunctions": [
                            5324
                        ],
                        "body": {
                            "id": 7242,
                            "nodeType": "Block",
                            "src": "1443:331:57",
                            "statements": [
                                {
                                    "assignments": [
                                        7197,
                                        7199
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 7197,
                                            "mutability": "mutable",
                                            "name": "pairAddr",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 7242,
                                            "src": "1448:16:57",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 7196,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1448:7:57",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 7199,
                                            "mutability": "mutable",
                                            "name": "feeK",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 7242,
                                            "src": "1466:9:57",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 7198,
                                                "name": "uint",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1466:4:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 7203,
                                    "initialValue": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "id": 7201,
                                                "name": "data",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7190,
                                                "src": "1489:4:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            ],
                                            "id": 7200,
                                            "name": "parseData",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7182,
                                            "src": "1479:9:57",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$_t_uint256_$",
                                                "typeString": "function (bytes memory) pure returns (address,uint256)"
                                            }
                                        },
                                        "id": 7202,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1479:15:57",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$",
                                            "typeString": "tuple(address,uint256)"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "1447:47:57"
                                },
                                {
                                    "assignments": [
                                        7205
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 7205,
                                            "mutability": "mutable",
                                            "name": "pair",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 7242,
                                            "src": "1498:19:57",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IUniswapV2Pair_$2705",
                                                "typeString": "contract IUniswapV2Pair"
                                            },
                                            "typeName": {
                                                "contractScope": null,
                                                "id": 7204,
                                                "name": "IUniswapV2Pair",
                                                "nodeType": "UserDefinedTypeName",
                                                "referencedDeclaration": 2705,
                                                "src": "1498:14:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IUniswapV2Pair_$2705",
                                                    "typeString": "contract IUniswapV2Pair"
                                                }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 7209,
                                    "initialValue": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "id": 7207,
                                                "name": "pairAddr",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7197,
                                                "src": "1535:8:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 7206,
                                            "name": "IUniswapV2Pair",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2705,
                                            "src": "1520:14:57",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IUniswapV2Pair_$2705_$",
                                                "typeString": "type(contract IUniswapV2Pair)"
                                            }
                                        },
                                        "id": 7208,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1520:24:57",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IUniswapV2Pair_$2705",
                                            "typeString": "contract IUniswapV2Pair"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "1498:46:57"
                                },
                                {
                                    "assignments": [
                                        7211,
                                        7213,
                                        null
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 7211,
                                            "mutability": "mutable",
                                            "name": "reserve0",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 7242,
                                            "src": "1549:13:57",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 7210,
                                                "name": "uint",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1549:4:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 7213,
                                            "mutability": "mutable",
                                            "name": "reserve1",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 7242,
                                            "src": "1564:13:57",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 7212,
                                                "name": "uint",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1564:4:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        null
                                    ],
                                    "id": 7217,
                                    "initialValue": {
                                        "argumentTypes": null,
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                                "argumentTypes": null,
                                                "id": 7214,
                                                "name": "pair",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7205,
                                                "src": "1582:4:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IUniswapV2Pair_$2705",
                                                    "typeString": "contract IUniswapV2Pair"
                                                }
                                            },
                                            "id": 7215,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getReserves",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2647,
                                            "src": "1582:16:57",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                                                "typeString": "function () view external returns (uint112,uint112,uint32)"
                                            }
                                        },
                                        "id": 7216,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1582:18:57",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                                            "typeString": "tuple(uint112,uint112,uint32)"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "1548:52:57"
                                },
                                {
                                    "assignments": [
                                        7219,
                                        7221
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 7219,
                                            "mutability": "mutable",
                                            "name": "reserveIn",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 7242,
                                            "src": "1605:14:57",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 7218,
                                                "name": "uint",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1605:4:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 7221,
                                            "mutability": "mutable",
                                            "name": "reserveOut",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 7242,
                                            "src": "1621:15:57",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 7220,
                                                "name": "uint",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1621:4:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 7234,
                                    "initialValue": {
                                        "argumentTypes": null,
                                        "condition": {
                                            "argumentTypes": null,
                                            "commonType": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "id": 7226,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "argumentTypes": null,
                                                "arguments": [],
                                                "expression": {
                                                    "argumentTypes": [],
                                                    "expression": {
                                                        "argumentTypes": null,
                                                        "id": 7222,
                                                        "name": "pair",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7205,
                                                        "src": "1640:4:57",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IUniswapV2Pair_$2705",
                                                            "typeString": "contract IUniswapV2Pair"
                                                        }
                                                    },
                                                    "id": 7223,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "token0",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 2633,
                                                    "src": "1640:11:57",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                                        "typeString": "function () view external returns (address)"
                                                    }
                                                },
                                                "id": 7224,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "1640:13:57",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                                "argumentTypes": null,
                                                "id": 7225,
                                                "name": "input",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7184,
                                                "src": "1657:5:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "src": "1640:22:57",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "falseExpression": {
                                            "argumentTypes": null,
                                            "components": [
                                                {
                                                    "argumentTypes": null,
                                                    "id": 7230,
                                                    "name": "reserve1",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7213,
                                                    "src": "1689:8:57",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                {
                                                    "argumentTypes": null,
                                                    "id": 7231,
                                                    "name": "reserve0",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7211,
                                                    "src": "1699:8:57",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "id": 7232,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "1688:20:57",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                                "typeString": "tuple(uint256,uint256)"
                                            }
                                        },
                                        "id": 7233,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "Conditional",
                                        "src": "1640:68:57",
                                        "trueExpression": {
                                            "argumentTypes": null,
                                            "components": [
                                                {
                                                    "argumentTypes": null,
                                                    "id": 7227,
                                                    "name": "reserve0",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7211,
                                                    "src": "1666:8:57",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                {
                                                    "argumentTypes": null,
                                                    "id": 7228,
                                                    "name": "reserve1",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7213,
                                                    "src": "1676:8:57",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "id": 7229,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "1665:20:57",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                                "typeString": "tuple(uint256,uint256)"
                                            }
                                        },
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                            "typeString": "tuple(uint256,uint256)"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "1604:104:57"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "id": 7236,
                                                "name": "amountIn",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7188,
                                                "src": "1732:8:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 7237,
                                                "name": "reserveIn",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7219,
                                                "src": "1742:9:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 7238,
                                                "name": "reserveOut",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7221,
                                                "src": "1753:10:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 7239,
                                                "name": "feeK",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7199,
                                                "src": "1765:4:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 7235,
                                            "name": "getAmountOut",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7287,
                                            "src": "1719:12:57",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256)"
                                            }
                                        },
                                        "id": 7240,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1719:51:57",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 7195,
                                    "id": 7241,
                                    "nodeType": "Return",
                                    "src": "1712:58:57"
                                }
                            ]
                        },
                        "documentation": null,
                        "functionSelector": "7eace892",
                        "id": 7243,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getOutputAmount",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 7192,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "1409:8:57"
                        },
                        "parameters": {
                            "id": 7191,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7184,
                                    "mutability": "mutable",
                                    "name": "input",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 7243,
                                    "src": "1332:13:57",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7183,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1332:7:57",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7186,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 7243,
                                    "src": "1349:7:57",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7185,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1349:7:57",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7188,
                                    "mutability": "mutable",
                                    "name": "amountIn",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 7243,
                                    "src": "1360:13:57",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 7187,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1360:4:57",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7190,
                                    "mutability": "mutable",
                                    "name": "data",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 7243,
                                    "src": "1377:19:57",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 7189,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1377:5:57",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1328:71:57"
                        },
                        "returnParameters": {
                            "id": 7195,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7194,
                                    "mutability": "mutable",
                                    "name": "amountOut",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 7243,
                                    "src": "1427:14:57",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 7193,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1427:4:57",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1426:16:57"
                        },
                        "scope": 7292,
                        "src": "1304:470:57",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 7286,
                            "nodeType": "Block",
                            "src": "1897:206:57",
                            "statements": [
                                {
                                    "assignments": [
                                        7257
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 7257,
                                            "mutability": "mutable",
                                            "name": "amountInWithFee",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 7286,
                                            "src": "1901:20:57",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 7256,
                                                "name": "uint",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1901:4:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 7262,
                                    "initialValue": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "id": 7260,
                                                "name": "feeK",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7251,
                                                "src": "1937:4:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": null,
                                                "id": 7258,
                                                "name": "amountIn",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7245,
                                                "src": "1924:8:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 7259,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "mul",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 131,
                                            "src": "1924:12:57",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                        },
                                        "id": 7261,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1924:18:57",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "1901:41:57"
                                },
                                {
                                    "assignments": [
                                        7264
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 7264,
                                            "mutability": "mutable",
                                            "name": "numerator",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 7286,
                                            "src": "1946:14:57",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 7263,
                                                "name": "uint",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1946:4:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 7269,
                                    "initialValue": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "id": 7267,
                                                "name": "reserveOut",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7249,
                                                "src": "1983:10:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": null,
                                                "id": 7265,
                                                "name": "amountInWithFee",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7257,
                                                "src": "1963:15:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 7266,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "mul",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 131,
                                            "src": "1963:19:57",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                        },
                                        "id": 7268,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1963:31:57",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "1946:48:57"
                                },
                                {
                                    "assignments": [
                                        7271
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 7271,
                                            "mutability": "mutable",
                                            "name": "denominator",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 7286,
                                            "src": "1998:16:57",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 7270,
                                                "name": "uint",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1998:4:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 7279,
                                    "initialValue": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "id": 7277,
                                                "name": "amountInWithFee",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7257,
                                                "src": "2042:15:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": null,
                                                "arguments": [
                                                    {
                                                        "argumentTypes": null,
                                                        "hexValue": "3130303030",
                                                        "id": 7274,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "2031:5:57",
                                                        "subdenomination": null,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_10000_by_1",
                                                            "typeString": "int_const 10000"
                                                        },
                                                        "value": "10000"
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_rational_10000_by_1",
                                                            "typeString": "int_const 10000"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": null,
                                                        "id": 7272,
                                                        "name": "reserveIn",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7247,
                                                        "src": "2017:9:57",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "id": 7273,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "mul",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 131,
                                                    "src": "2017:13:57",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                    }
                                                },
                                                "id": 7275,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "2017:20:57",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 7276,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "add",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 51,
                                            "src": "2017:24:57",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                        },
                                        "id": 7278,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2017:41:57",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "1998:60:57"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "id": 7284,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "argumentTypes": null,
                                            "id": 7280,
                                            "name": "amountOut",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7254,
                                            "src": "2062:9:57",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "argumentTypes": null,
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 7283,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "argumentTypes": null,
                                                "id": 7281,
                                                "name": "numerator",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7264,
                                                "src": "2074:9:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "/",
                                            "rightExpression": {
                                                "argumentTypes": null,
                                                "id": 7282,
                                                "name": "denominator",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7271,
                                                "src": "2086:11:57",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "src": "2074:23:57",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "2062:35:57",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 7285,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2062:35:57"
                                }
                            ]
                        },
                        "documentation": null,
                        "id": 7287,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getAmountOut",
                        "nodeType": "FunctionDefinition",
                        "overrides": null,
                        "parameters": {
                            "id": 7252,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7245,
                                    "mutability": "mutable",
                                    "name": "amountIn",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 7287,
                                    "src": "1799:13:57",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 7244,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1799:4:57",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7247,
                                    "mutability": "mutable",
                                    "name": "reserveIn",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 7287,
                                    "src": "1814:14:57",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 7246,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1814:4:57",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7249,
                                    "mutability": "mutable",
                                    "name": "reserveOut",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 7287,
                                    "src": "1830:15:57",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 7248,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1830:4:57",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7251,
                                    "mutability": "mutable",
                                    "name": "feeK",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 7287,
                                    "src": "1847:9:57",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 7250,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1847:4:57",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1798:59:57"
                        },
                        "returnParameters": {
                            "id": 7255,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7254,
                                    "mutability": "mutable",
                                    "name": "amountOut",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 7287,
                                    "src": "1881:14:57",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 7253,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1881:4:57",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1880:16:57"
                        },
                        "scope": 7292,
                        "src": "1777:326:57",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 7290,
                            "nodeType": "Block",
                            "src": "2133:2:57",
                            "statements": []
                        },
                        "documentation": null,
                        "id": 7291,
                        "implemented": true,
                        "kind": "receive",
                        "modifiers": [],
                        "name": "",
                        "nodeType": "FunctionDefinition",
                        "overrides": null,
                        "parameters": {
                            "id": 7288,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2113:2:57"
                        },
                        "returnParameters": {
                            "id": 7289,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2133:0:57"
                        },
                        "scope": 7292,
                        "src": "2106:29:57",
                        "stateMutability": "payable",
                        "virtual": false,
                        "visibility": "external"
                    }
                ],
                "scope": 7293,
                "src": "246:1891:57"
            }
        ],
        "src": "32:2106:57"
    },
    "legacyAST": {
        "attributes": {
            "absolutePath": "project:/contracts/swappa/PairUniswapV2.sol",
            "exportedSymbols": {
                "PairUniswapV2": [
                    7292
                ]
            },
            "license": "MIT"
        },
        "children": [
            {
                "attributes": {
                    "literals": [
                        "solidity",
                        "0.6",
                        ".8"
                    ]
                },
                "id": 7031,
                "name": "PragmaDirective",
                "src": "32:22:57"
            },
            {
                "attributes": {
                    "SourceUnit": 219,
                    "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
                    "file": "@openzeppelin/contracts/math/SafeMath.sol",
                    "scope": 7293,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 7032,
                "name": "ImportDirective",
                "src": "56:51:57"
            },
            {
                "attributes": {
                    "SourceUnit": 726,
                    "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
                    "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
                    "scope": 7293,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 7033,
                "name": "ImportDirective",
                "src": "108:55:57"
            },
            {
                "attributes": {
                    "SourceUnit": 2706,
                    "absolutePath": "project:/contracts/interfaces/uniswap/IUniswapV2Pair.sol",
                    "file": "../interfaces/uniswap/IUniswapV2Pair.sol",
                    "scope": 7293,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 7034,
                "name": "ImportDirective",
                "src": "164:50:57"
            },
            {
                "attributes": {
                    "SourceUnit": 5326,
                    "absolutePath": "project:/contracts/swappa/ISwappaPairV1.sol",
                    "file": "./ISwappaPairV1.sol",
                    "scope": 7293,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 7035,
                "name": "ImportDirective",
                "src": "215:29:57"
            },
            {
                "attributes": {
                    "abstract": false,
                    "contractDependencies": [
                        5325
                    ],
                    "contractKind": "contract",
                    "documentation": null,
                    "fullyImplemented": true,
                    "linearizedBaseContracts": [
                        7292,
                        5325
                    ],
                    "name": "PairUniswapV2",
                    "scope": 7293
                },
                "children": [
                    {
                        "attributes": {
                            "arguments": null
                        },
                        "children": [
                            {
                                "attributes": {
                                    "contractScope": null,
                                    "name": "ISwappaPairV1",
                                    "referencedDeclaration": 5325,
                                    "type": "contract ISwappaPairV1"
                                },
                                "id": 7036,
                                "name": "UserDefinedTypeName",
                                "src": "272:13:57"
                            }
                        ],
                        "id": 7037,
                        "name": "InheritanceSpecifier",
                        "src": "272:13:57"
                    },
                    {
                        "children": [
                            {
                                "attributes": {
                                    "contractScope": null,
                                    "name": "SafeMath",
                                    "referencedDeclaration": 218,
                                    "type": "library SafeMath"
                                },
                                "id": 7038,
                                "name": "UserDefinedTypeName",
                                "src": "295:8:57"
                            },
                            {
                                "attributes": {
                                    "name": "uint",
                                    "type": "uint256"
                                },
                                "id": 7039,
                                "name": "ElementaryTypeName",
                                "src": "308:4:57"
                            }
                        ],
                        "id": 7040,
                        "name": "UsingForDirective",
                        "src": "289:24:57"
                    },
                    {
                        "attributes": {
                            "baseFunctions": [
                                5311
                            ],
                            "documentation": null,
                            "functionSelector": "32ef8314",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "swap",
                            "scope": 7292,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "overrides": [
                                        null
                                    ]
                                },
                                "id": 7050,
                                "name": "OverrideSpecifier",
                                "src": "407:8:57"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "input",
                                            "overrides": null,
                                            "scope": 7148,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 7041,
                                                "name": "ElementaryTypeName",
                                                "src": "333:7:57"
                                            }
                                        ],
                                        "id": 7042,
                                        "name": "VariableDeclaration",
                                        "src": "333:13:57"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "",
                                            "overrides": null,
                                            "scope": 7148,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 7043,
                                                "name": "ElementaryTypeName",
                                                "src": "350:7:57"
                                            }
                                        ],
                                        "id": 7044,
                                        "name": "VariableDeclaration",
                                        "src": "350:7:57"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "to",
                                            "overrides": null,
                                            "scope": 7148,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 7045,
                                                "name": "ElementaryTypeName",
                                                "src": "361:7:57"
                                            }
                                        ],
                                        "id": 7046,
                                        "name": "VariableDeclaration",
                                        "src": "361:10:57"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "data",
                                            "overrides": null,
                                            "scope": 7148,
                                            "stateVariable": false,
                                            "storageLocation": "calldata",
                                            "type": "bytes",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes",
                                                    "type": "bytes"
                                                },
                                                "id": 7047,
                                                "name": "ElementaryTypeName",
                                                "src": "375:5:57"
                                            }
                                        ],
                                        "id": 7048,
                                        "name": "VariableDeclaration",
                                        "src": "375:19:57"
                                    }
                                ],
                                "id": 7049,
                                "name": "ParameterList",
                                "src": "329:68:57"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 7051,
                                "name": "ParameterList",
                                "src": "416:0:57"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "assignments": [
                                                7053,
                                                7055
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "pairAddr",
                                                    "overrides": null,
                                                    "scope": 7147,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "address",
                                                    "value": null,
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "address",
                                                            "stateMutability": "nonpayable",
                                                            "type": "address"
                                                        },
                                                        "id": 7052,
                                                        "name": "ElementaryTypeName",
                                                        "src": "421:7:57"
                                                    }
                                                ],
                                                "id": 7053,
                                                "name": "VariableDeclaration",
                                                "src": "421:16:57"
                                            },
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "feeK",
                                                    "overrides": null,
                                                    "scope": 7147,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "uint256",
                                                    "value": null,
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "uint",
                                                            "type": "uint256"
                                                        },
                                                        "id": 7054,
                                                        "name": "ElementaryTypeName",
                                                        "src": "439:4:57"
                                                    }
                                                ],
                                                "id": 7055,
                                                "name": "VariableDeclaration",
                                                "src": "439:9:57"
                                            },
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple(address,uint256)",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                                    "typeString": "bytes calldata"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7182,
                                                            "type": "function (bytes memory) pure returns (address,uint256)",
                                                            "value": "parseData"
                                                        },
                                                        "id": 7056,
                                                        "name": "Identifier",
                                                        "src": "452:9:57"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7048,
                                                            "type": "bytes calldata",
                                                            "value": "data"
                                                        },
                                                        "id": 7057,
                                                        "name": "Identifier",
                                                        "src": "462:4:57"
                                                    }
                                                ],
                                                "id": 7058,
                                                "name": "FunctionCall",
                                                "src": "452:15:57"
                                            }
                                        ],
                                        "id": 7059,
                                        "name": "VariableDeclarationStatement",
                                        "src": "420:47:57"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                7061
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "inputAmount",
                                                    "overrides": null,
                                                    "scope": 7147,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "uint256",
                                                    "value": null,
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "uint",
                                                            "type": "uint256"
                                                        },
                                                        "id": 7060,
                                                        "name": "ElementaryTypeName",
                                                        "src": "471:4:57"
                                                    }
                                                ],
                                                "id": 7061,
                                                "name": "VariableDeclaration",
                                                "src": "471:16:57"
                                            },
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "uint256",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "balanceOf",
                                                            "referencedDeclaration": 325,
                                                            "type": "function (address) view external returns (uint256)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "contract ERC20",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 725,
                                                                            "type": "type(contract ERC20)",
                                                                            "value": "ERC20"
                                                                        },
                                                                        "id": 7062,
                                                                        "name": "Identifier",
                                                                        "src": "490:5:57"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 7042,
                                                                            "type": "address",
                                                                            "value": "input"
                                                                        },
                                                                        "id": 7063,
                                                                        "name": "Identifier",
                                                                        "src": "496:5:57"
                                                                    }
                                                                ],
                                                                "id": 7064,
                                                                "name": "FunctionCall",
                                                                "src": "490:12:57"
                                                            }
                                                        ],
                                                        "id": 7065,
                                                        "name": "MemberAccess",
                                                        "src": "490:22:57"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "address payable",
                                                            "type_conversion": true
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_contract$_PairUniswapV2_$7292",
                                                                            "typeString": "contract PairUniswapV2"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "type": "type(address)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "address",
                                                                            "type": null
                                                                        },
                                                                        "id": 7066,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "513:7:57"
                                                                    }
                                                                ],
                                                                "id": 7067,
                                                                "name": "ElementaryTypeNameExpression",
                                                                "src": "513:7:57"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": -28,
                                                                    "type": "contract PairUniswapV2",
                                                                    "value": "this"
                                                                },
                                                                "id": 7068,
                                                                "name": "Identifier",
                                                                "src": "521:4:57"
                                                            }
                                                        ],
                                                        "id": 7069,
                                                        "name": "FunctionCall",
                                                        "src": "513:13:57"
                                                    }
                                                ],
                                                "id": 7070,
                                                "name": "FunctionCall",
                                                "src": "490:37:57"
                                            }
                                        ],
                                        "id": 7071,
                                        "name": "VariableDeclarationStatement",
                                        "src": "471:56:57"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_d353c8620131f2c6bbc553953a76ac202fe45ba7cf890cd1a1567214c5b736ab",
                                                                    "typeString": "literal_string \"PairUniswapV2: transfer failed!\""
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                -18,
                                                                -18
                                                            ],
                                                            "referencedDeclaration": -18,
                                                            "type": "function (bool,string memory) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 7072,
                                                        "name": "Identifier",
                                                        "src": "531:7:57"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "bool",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "transfer",
                                                                    "referencedDeclaration": 346,
                                                                    "type": "function (address,uint256) external returns (bool)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "contract ERC20",
                                                                            "type_conversion": true
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    ],
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 725,
                                                                                    "type": "type(contract ERC20)",
                                                                                    "value": "ERC20"
                                                                                },
                                                                                "id": 7073,
                                                                                "name": "Identifier",
                                                                                "src": "543:5:57"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 7042,
                                                                                    "type": "address",
                                                                                    "value": "input"
                                                                                },
                                                                                "id": 7074,
                                                                                "name": "Identifier",
                                                                                "src": "549:5:57"
                                                                            }
                                                                        ],
                                                                        "id": 7075,
                                                                        "name": "FunctionCall",
                                                                        "src": "543:12:57"
                                                                    }
                                                                ],
                                                                "id": 7076,
                                                                "name": "MemberAccess",
                                                                "src": "543:21:57"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 7053,
                                                                    "type": "address",
                                                                    "value": "pairAddr"
                                                                },
                                                                "id": 7077,
                                                                "name": "Identifier",
                                                                "src": "565:8:57"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 7061,
                                                                    "type": "uint256",
                                                                    "value": "inputAmount"
                                                                },
                                                                "id": 7078,
                                                                "name": "Identifier",
                                                                "src": "575:11:57"
                                                            }
                                                        ],
                                                        "id": 7079,
                                                        "name": "FunctionCall",
                                                        "src": "543:44:57"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "hexvalue": "50616972556e697377617056323a207472616e73666572206661696c656421",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "subdenomination": null,
                                                            "token": "string",
                                                            "type": "literal_string \"PairUniswapV2: transfer failed!\"",
                                                            "value": "PairUniswapV2: transfer failed!"
                                                        },
                                                        "id": 7080,
                                                        "name": "Literal",
                                                        "src": "592:33:57"
                                                    }
                                                ],
                                                "id": 7081,
                                                "name": "FunctionCall",
                                                "src": "531:95:57"
                                            }
                                        ],
                                        "id": 7082,
                                        "name": "ExpressionStatement",
                                        "src": "531:95:57"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                7084
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "pair",
                                                    "overrides": null,
                                                    "scope": 7147,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "contract IUniswapV2Pair",
                                                    "value": null,
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "contractScope": null,
                                                            "name": "IUniswapV2Pair",
                                                            "referencedDeclaration": 2705,
                                                            "type": "contract IUniswapV2Pair"
                                                        },
                                                        "id": 7083,
                                                        "name": "UserDefinedTypeName",
                                                        "src": "630:14:57"
                                                    }
                                                ],
                                                "id": 7084,
                                                "name": "VariableDeclaration",
                                                "src": "630:19:57"
                                            },
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "contract IUniswapV2Pair",
                                                    "type_conversion": true
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 2705,
                                                            "type": "type(contract IUniswapV2Pair)",
                                                            "value": "IUniswapV2Pair"
                                                        },
                                                        "id": 7085,
                                                        "name": "Identifier",
                                                        "src": "652:14:57"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7053,
                                                            "type": "address",
                                                            "value": "pairAddr"
                                                        },
                                                        "id": 7086,
                                                        "name": "Identifier",
                                                        "src": "667:8:57"
                                                    }
                                                ],
                                                "id": 7087,
                                                "name": "FunctionCall",
                                                "src": "652:24:57"
                                            }
                                        ],
                                        "id": 7088,
                                        "name": "VariableDeclarationStatement",
                                        "src": "630:46:57"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                7090,
                                                7092,
                                                null
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "reserve0",
                                                    "overrides": null,
                                                    "scope": 7147,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "uint256",
                                                    "value": null,
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "uint",
                                                            "type": "uint256"
                                                        },
                                                        "id": 7089,
                                                        "name": "ElementaryTypeName",
                                                        "src": "681:4:57"
                                                    }
                                                ],
                                                "id": 7090,
                                                "name": "VariableDeclaration",
                                                "src": "681:13:57"
                                            },
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "reserve1",
                                                    "overrides": null,
                                                    "scope": 7147,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "uint256",
                                                    "value": null,
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "uint",
                                                            "type": "uint256"
                                                        },
                                                        "id": 7091,
                                                        "name": "ElementaryTypeName",
                                                        "src": "696:4:57"
                                                    }
                                                ],
                                                "id": 7092,
                                                "name": "VariableDeclaration",
                                                "src": "696:13:57"
                                            },
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                        null
                                                    ],
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple(uint112,uint112,uint32)",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                null
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "getReserves",
                                                            "referencedDeclaration": 2647,
                                                            "type": "function () view external returns (uint112,uint112,uint32)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 7084,
                                                                    "type": "contract IUniswapV2Pair",
                                                                    "value": "pair"
                                                                },
                                                                "id": 7093,
                                                                "name": "Identifier",
                                                                "src": "714:4:57"
                                                            }
                                                        ],
                                                        "id": 7094,
                                                        "name": "MemberAccess",
                                                        "src": "714:16:57"
                                                    }
                                                ],
                                                "id": 7095,
                                                "name": "FunctionCall",
                                                "src": "714:18:57"
                                            }
                                        ],
                                        "id": 7096,
                                        "name": "VariableDeclarationStatement",
                                        "src": "680:52:57"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "commonType": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "==",
                                                    "type": "bool"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "arguments": [
                                                                null
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "address",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        null
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "token0",
                                                                    "referencedDeclaration": 2633,
                                                                    "type": "function () view external returns (address)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 7084,
                                                                            "type": "contract IUniswapV2Pair",
                                                                            "value": "pair"
                                                                        },
                                                                        "id": 7097,
                                                                        "name": "Identifier",
                                                                        "src": "740:4:57"
                                                                    }
                                                                ],
                                                                "id": 7098,
                                                                "name": "MemberAccess",
                                                                "src": "740:11:57"
                                                            }
                                                        ],
                                                        "id": 7099,
                                                        "name": "FunctionCall",
                                                        "src": "740:13:57"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7042,
                                                            "type": "address",
                                                            "value": "input"
                                                        },
                                                        "id": 7100,
                                                        "name": "Identifier",
                                                        "src": "757:5:57"
                                                    }
                                                ],
                                                "id": 7101,
                                                "name": "BinaryOperation",
                                                "src": "740:22:57"
                                            },
                                            {
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "assignments": [
                                                                7103
                                                            ]
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "constant": false,
                                                                    "mutability": "mutable",
                                                                    "name": "outputAmount",
                                                                    "overrides": null,
                                                                    "scope": 7123,
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "type": "uint256",
                                                                    "value": null,
                                                                    "visibility": "internal"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "uint",
                                                                            "type": "uint256"
                                                                        },
                                                                        "id": 7102,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "769:4:57"
                                                                    }
                                                                ],
                                                                "id": 7103,
                                                                "name": "VariableDeclaration",
                                                                "src": "769:17:57"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "uint256",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 7287,
                                                                            "type": "function (uint256,uint256,uint256,uint256) pure returns (uint256)",
                                                                            "value": "getAmountOut"
                                                                        },
                                                                        "id": 7104,
                                                                        "name": "Identifier",
                                                                        "src": "789:12:57"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 7061,
                                                                            "type": "uint256",
                                                                            "value": "inputAmount"
                                                                        },
                                                                        "id": 7105,
                                                                        "name": "Identifier",
                                                                        "src": "802:11:57"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 7090,
                                                                            "type": "uint256",
                                                                            "value": "reserve0"
                                                                        },
                                                                        "id": 7106,
                                                                        "name": "Identifier",
                                                                        "src": "815:8:57"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 7092,
                                                                            "type": "uint256",
                                                                            "value": "reserve1"
                                                                        },
                                                                        "id": 7107,
                                                                        "name": "Identifier",
                                                                        "src": "825:8:57"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 7055,
                                                                            "type": "uint256",
                                                                            "value": "feeK"
                                                                        },
                                                                        "id": 7108,
                                                                        "name": "Identifier",
                                                                        "src": "835:4:57"
                                                                    }
                                                                ],
                                                                "id": 7109,
                                                                "name": "FunctionCall",
                                                                "src": "789:51:57"
                                                            }
                                                        ],
                                                        "id": 7110,
                                                        "name": "VariableDeclarationStatement",
                                                        "src": "769:71:57"
                                                    },
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "tuple()",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                                    "typeString": "int_const 0"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                                    "typeString": "bytes memory"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "swap",
                                                                            "referencedDeclaration": 2689,
                                                                            "type": "function (uint256,uint256,address,bytes memory) external"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 7084,
                                                                                    "type": "contract IUniswapV2Pair",
                                                                                    "value": "pair"
                                                                                },
                                                                                "id": 7111,
                                                                                "name": "Identifier",
                                                                                "src": "845:4:57"
                                                                            }
                                                                        ],
                                                                        "id": 7113,
                                                                        "name": "MemberAccess",
                                                                        "src": "845:9:57"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "hexvalue": "30",
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "subdenomination": null,
                                                                            "token": "number",
                                                                            "type": "int_const 0",
                                                                            "value": "0"
                                                                        },
                                                                        "id": 7114,
                                                                        "name": "Literal",
                                                                        "src": "855:1:57"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 7103,
                                                                            "type": "uint256",
                                                                            "value": "outputAmount"
                                                                        },
                                                                        "id": 7115,
                                                                        "name": "Identifier",
                                                                        "src": "858:12:57"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 7046,
                                                                            "type": "address",
                                                                            "value": "to"
                                                                        },
                                                                        "id": 7116,
                                                                        "name": "Identifier",
                                                                        "src": "872:2:57"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "bytes memory",
                                                                            "type_conversion": false
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                                            "typeString": "int_const 0"
                                                                                        }
                                                                                    ],
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "lValueRequested": false,
                                                                                    "type": "function (uint256) pure returns (bytes memory)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "name": "bytes",
                                                                                            "type": "bytes"
                                                                                        },
                                                                                        "id": 7117,
                                                                                        "name": "ElementaryTypeName",
                                                                                        "src": "880:5:57"
                                                                                    }
                                                                                ],
                                                                                "id": 7118,
                                                                                "name": "NewExpression",
                                                                                "src": "876:9:57"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "hexvalue": "30",
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "lValueRequested": false,
                                                                                    "subdenomination": null,
                                                                                    "token": "number",
                                                                                    "type": "int_const 0",
                                                                                    "value": "0"
                                                                                },
                                                                                "id": 7119,
                                                                                "name": "Literal",
                                                                                "src": "886:1:57"
                                                                            }
                                                                        ],
                                                                        "id": 7120,
                                                                        "name": "FunctionCall",
                                                                        "src": "876:12:57"
                                                                    }
                                                                ],
                                                                "id": 7121,
                                                                "name": "FunctionCall",
                                                                "src": "845:44:57"
                                                            }
                                                        ],
                                                        "id": 7122,
                                                        "name": "ExpressionStatement",
                                                        "src": "845:44:57"
                                                    }
                                                ],
                                                "id": 7123,
                                                "name": "Block",
                                                "src": "764:130:57"
                                            },
                                            {
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "assignments": [
                                                                7125
                                                            ]
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "constant": false,
                                                                    "mutability": "mutable",
                                                                    "name": "outputAmount",
                                                                    "overrides": null,
                                                                    "scope": 7145,
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "type": "uint256",
                                                                    "value": null,
                                                                    "visibility": "internal"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "uint",
                                                                            "type": "uint256"
                                                                        },
                                                                        "id": 7124,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "905:4:57"
                                                                    }
                                                                ],
                                                                "id": 7125,
                                                                "name": "VariableDeclaration",
                                                                "src": "905:17:57"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "uint256",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 7287,
                                                                            "type": "function (uint256,uint256,uint256,uint256) pure returns (uint256)",
                                                                            "value": "getAmountOut"
                                                                        },
                                                                        "id": 7126,
                                                                        "name": "Identifier",
                                                                        "src": "925:12:57"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 7061,
                                                                            "type": "uint256",
                                                                            "value": "inputAmount"
                                                                        },
                                                                        "id": 7127,
                                                                        "name": "Identifier",
                                                                        "src": "938:11:57"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 7092,
                                                                            "type": "uint256",
                                                                            "value": "reserve1"
                                                                        },
                                                                        "id": 7128,
                                                                        "name": "Identifier",
                                                                        "src": "951:8:57"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 7090,
                                                                            "type": "uint256",
                                                                            "value": "reserve0"
                                                                        },
                                                                        "id": 7129,
                                                                        "name": "Identifier",
                                                                        "src": "961:8:57"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 7055,
                                                                            "type": "uint256",
                                                                            "value": "feeK"
                                                                        },
                                                                        "id": 7130,
                                                                        "name": "Identifier",
                                                                        "src": "971:4:57"
                                                                    }
                                                                ],
                                                                "id": 7131,
                                                                "name": "FunctionCall",
                                                                "src": "925:51:57"
                                                            }
                                                        ],
                                                        "id": 7132,
                                                        "name": "VariableDeclarationStatement",
                                                        "src": "905:71:57"
                                                    },
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "tuple()",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                                    "typeString": "int_const 0"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                                    "typeString": "bytes memory"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "swap",
                                                                            "referencedDeclaration": 2689,
                                                                            "type": "function (uint256,uint256,address,bytes memory) external"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 7084,
                                                                                    "type": "contract IUniswapV2Pair",
                                                                                    "value": "pair"
                                                                                },
                                                                                "id": 7133,
                                                                                "name": "Identifier",
                                                                                "src": "981:4:57"
                                                                            }
                                                                        ],
                                                                        "id": 7135,
                                                                        "name": "MemberAccess",
                                                                        "src": "981:9:57"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 7125,
                                                                            "type": "uint256",
                                                                            "value": "outputAmount"
                                                                        },
                                                                        "id": 7136,
                                                                        "name": "Identifier",
                                                                        "src": "991:12:57"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "hexvalue": "30",
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "subdenomination": null,
                                                                            "token": "number",
                                                                            "type": "int_const 0",
                                                                            "value": "0"
                                                                        },
                                                                        "id": 7137,
                                                                        "name": "Literal",
                                                                        "src": "1005:1:57"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 7046,
                                                                            "type": "address",
                                                                            "value": "to"
                                                                        },
                                                                        "id": 7138,
                                                                        "name": "Identifier",
                                                                        "src": "1008:2:57"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "bytes memory",
                                                                            "type_conversion": false
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                                            "typeString": "int_const 0"
                                                                                        }
                                                                                    ],
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "lValueRequested": false,
                                                                                    "type": "function (uint256) pure returns (bytes memory)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "name": "bytes",
                                                                                            "type": "bytes"
                                                                                        },
                                                                                        "id": 7139,
                                                                                        "name": "ElementaryTypeName",
                                                                                        "src": "1016:5:57"
                                                                                    }
                                                                                ],
                                                                                "id": 7140,
                                                                                "name": "NewExpression",
                                                                                "src": "1012:9:57"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "hexvalue": "30",
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "lValueRequested": false,
                                                                                    "subdenomination": null,
                                                                                    "token": "number",
                                                                                    "type": "int_const 0",
                                                                                    "value": "0"
                                                                                },
                                                                                "id": 7141,
                                                                                "name": "Literal",
                                                                                "src": "1022:1:57"
                                                                            }
                                                                        ],
                                                                        "id": 7142,
                                                                        "name": "FunctionCall",
                                                                        "src": "1012:12:57"
                                                                    }
                                                                ],
                                                                "id": 7143,
                                                                "name": "FunctionCall",
                                                                "src": "981:44:57"
                                                            }
                                                        ],
                                                        "id": 7144,
                                                        "name": "ExpressionStatement",
                                                        "src": "981:44:57"
                                                    }
                                                ],
                                                "id": 7145,
                                                "name": "Block",
                                                "src": "900:130:57"
                                            }
                                        ],
                                        "id": 7146,
                                        "name": "IfStatement",
                                        "src": "736:294:57"
                                    }
                                ],
                                "id": 7147,
                                "name": "Block",
                                "src": "416:617:57"
                            }
                        ],
                        "id": 7148,
                        "name": "FunctionDefinition",
                        "src": "316:717:57"
                    },
                    {
                        "attributes": {
                            "documentation": null,
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "parseData",
                            "overrides": null,
                            "scope": 7292,
                            "stateMutability": "pure",
                            "virtual": false,
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "data",
                                            "overrides": null,
                                            "scope": 7182,
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "type": "bytes",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes",
                                                    "type": "bytes"
                                                },
                                                "id": 7149,
                                                "name": "ElementaryTypeName",
                                                "src": "1055:5:57"
                                            }
                                        ],
                                        "id": 7150,
                                        "name": "VariableDeclaration",
                                        "src": "1055:17:57"
                                    }
                                ],
                                "id": 7151,
                                "name": "ParameterList",
                                "src": "1054:19:57"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "pairAddr",
                                            "overrides": null,
                                            "scope": 7182,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 7152,
                                                "name": "ElementaryTypeName",
                                                "src": "1096:7:57"
                                            }
                                        ],
                                        "id": 7153,
                                        "name": "VariableDeclaration",
                                        "src": "1096:16:57"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "fee",
                                            "overrides": null,
                                            "scope": 7182,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint",
                                                    "type": "uint256"
                                                },
                                                "id": 7154,
                                                "name": "ElementaryTypeName",
                                                "src": "1114:4:57"
                                            }
                                        ],
                                        "id": 7155,
                                        "name": "VariableDeclaration",
                                        "src": "1114:8:57"
                                    }
                                ],
                                "id": 7156,
                                "name": "ParameterList",
                                "src": "1095:28:57"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_d18ba8569e2dbcee08c235a74d21e1a2e6a021d1e148a5144fb1d47a71738197",
                                                                    "typeString": "literal_string \"PairUniswapV2: invalid data!\""
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                -18,
                                                                -18
                                                            ],
                                                            "referencedDeclaration": -18,
                                                            "type": "function (bool,string memory) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 7157,
                                                        "name": "Identifier",
                                                        "src": "1128:7:57"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "==",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "length",
                                                                    "referencedDeclaration": null,
                                                                    "type": "uint256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 7150,
                                                                            "type": "bytes memory",
                                                                            "value": "data"
                                                                        },
                                                                        "id": 7158,
                                                                        "name": "Identifier",
                                                                        "src": "1136:4:57"
                                                                    }
                                                                ],
                                                                "id": 7159,
                                                                "name": "MemberAccess",
                                                                "src": "1136:11:57"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "hexvalue": "3231",
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "subdenomination": null,
                                                                    "token": "number",
                                                                    "type": "int_const 21",
                                                                    "value": "21"
                                                                },
                                                                "id": 7160,
                                                                "name": "Literal",
                                                                "src": "1151:2:57"
                                                            }
                                                        ],
                                                        "id": 7161,
                                                        "name": "BinaryOperation",
                                                        "src": "1136:17:57"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "hexvalue": "50616972556e697377617056323a20696e76616c6964206461746121",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "subdenomination": null,
                                                            "token": "string",
                                                            "type": "literal_string \"PairUniswapV2: invalid data!\"",
                                                            "value": "PairUniswapV2: invalid data!"
                                                        },
                                                        "id": 7162,
                                                        "name": "Literal",
                                                        "src": "1155:30:57"
                                                    }
                                                ],
                                                "id": 7163,
                                                "name": "FunctionCall",
                                                "src": "1128:58:57"
                                            }
                                        ],
                                        "id": 7164,
                                        "name": "ExpressionStatement",
                                        "src": "1128:58:57"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "uint256"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7155,
                                                            "type": "uint256",
                                                            "value": "fee"
                                                        },
                                                        "id": 7165,
                                                        "name": "Identifier",
                                                        "src": "1207:3:57"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "uint256",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint8",
                                                                            "typeString": "uint8"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "sub",
                                                                    "referencedDeclaration": 68,
                                                                    "type": "function (uint256,uint256) pure returns (uint256)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "uint256",
                                                                            "type_conversion": true
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_rational_10000_by_1",
                                                                                            "typeString": "int_const 10000"
                                                                                        }
                                                                                    ],
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "lValueRequested": false,
                                                                                    "type": "type(uint256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "name": "uint",
                                                                                            "type": null
                                                                                        },
                                                                                        "id": 7166,
                                                                                        "name": "ElementaryTypeName",
                                                                                        "src": "1213:4:57"
                                                                                    }
                                                                                ],
                                                                                "id": 7167,
                                                                                "name": "ElementaryTypeNameExpression",
                                                                                "src": "1213:4:57"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "hexvalue": "3130303030",
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "lValueRequested": false,
                                                                                    "subdenomination": null,
                                                                                    "token": "number",
                                                                                    "type": "int_const 10000",
                                                                                    "value": "10000"
                                                                                },
                                                                                "id": 7168,
                                                                                "name": "Literal",
                                                                                "src": "1218:5:57"
                                                                            }
                                                                        ],
                                                                        "id": 7169,
                                                                        "name": "FunctionCall",
                                                                        "src": "1213:11:57"
                                                                    }
                                                                ],
                                                                "id": 7170,
                                                                "name": "MemberAccess",
                                                                "src": "1213:15:57"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "uint8",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_bytes1",
                                                                                    "typeString": "bytes1"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "type": "type(uint8)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "name": "uint8",
                                                                                    "type": null
                                                                                },
                                                                                "id": 7171,
                                                                                "name": "ElementaryTypeName",
                                                                                "src": "1229:5:57"
                                                                            }
                                                                        ],
                                                                        "id": 7172,
                                                                        "name": "ElementaryTypeNameExpression",
                                                                        "src": "1229:5:57"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "bytes1"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 7150,
                                                                                    "type": "bytes memory",
                                                                                    "value": "data"
                                                                                },
                                                                                "id": 7173,
                                                                                "name": "Identifier",
                                                                                "src": "1235:4:57"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "hexvalue": "3230",
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "lValueRequested": false,
                                                                                    "subdenomination": null,
                                                                                    "token": "number",
                                                                                    "type": "int_const 20",
                                                                                    "value": "20"
                                                                                },
                                                                                "id": 7174,
                                                                                "name": "Literal",
                                                                                "src": "1240:2:57"
                                                                            }
                                                                        ],
                                                                        "id": 7175,
                                                                        "name": "IndexAccess",
                                                                        "src": "1235:8:57"
                                                                    }
                                                                ],
                                                                "id": 7176,
                                                                "name": "FunctionCall",
                                                                "src": "1229:15:57"
                                                            }
                                                        ],
                                                        "id": 7177,
                                                        "name": "FunctionCall",
                                                        "src": "1213:32:57"
                                                    }
                                                ],
                                                "id": 7178,
                                                "name": "Assignment",
                                                "src": "1207:38:57"
                                            }
                                        ],
                                        "id": 7179,
                                        "name": "ExpressionStatement",
                                        "src": "1207:38:57"
                                    },
                                    {
                                        "attributes": {
                                            "evmVersion": "istanbul",
                                            "externalReferences": [
                                                {
                                                    "declaration": 7150,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "1284:4:57",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 7153,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "1262:8:57",
                                                    "valueSize": 1
                                                }
                                            ],
                                            "operations": "{\n    pairAddr := mload(add(data, 20))\n}"
                                        },
                                        "children": [],
                                        "id": 7180,
                                        "name": "InlineAssembly",
                                        "src": "1249:49:57"
                                    }
                                ],
                                "id": 7181,
                                "name": "Block",
                                "src": "1124:177:57"
                            }
                        ],
                        "id": 7182,
                        "name": "FunctionDefinition",
                        "src": "1036:265:57"
                    },
                    {
                        "attributes": {
                            "baseFunctions": [
                                5324
                            ],
                            "documentation": null,
                            "functionSelector": "7eace892",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "getOutputAmount",
                            "scope": 7292,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "overrides": [
                                        null
                                    ]
                                },
                                "id": 7192,
                                "name": "OverrideSpecifier",
                                "src": "1409:8:57"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "input",
                                            "overrides": null,
                                            "scope": 7243,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 7183,
                                                "name": "ElementaryTypeName",
                                                "src": "1332:7:57"
                                            }
                                        ],
                                        "id": 7184,
                                        "name": "VariableDeclaration",
                                        "src": "1332:13:57"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "",
                                            "overrides": null,
                                            "scope": 7243,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 7185,
                                                "name": "ElementaryTypeName",
                                                "src": "1349:7:57"
                                            }
                                        ],
                                        "id": 7186,
                                        "name": "VariableDeclaration",
                                        "src": "1349:7:57"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "amountIn",
                                            "overrides": null,
                                            "scope": 7243,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint",
                                                    "type": "uint256"
                                                },
                                                "id": 7187,
                                                "name": "ElementaryTypeName",
                                                "src": "1360:4:57"
                                            }
                                        ],
                                        "id": 7188,
                                        "name": "VariableDeclaration",
                                        "src": "1360:13:57"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "data",
                                            "overrides": null,
                                            "scope": 7243,
                                            "stateVariable": false,
                                            "storageLocation": "calldata",
                                            "type": "bytes",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes",
                                                    "type": "bytes"
                                                },
                                                "id": 7189,
                                                "name": "ElementaryTypeName",
                                                "src": "1377:5:57"
                                            }
                                        ],
                                        "id": 7190,
                                        "name": "VariableDeclaration",
                                        "src": "1377:19:57"
                                    }
                                ],
                                "id": 7191,
                                "name": "ParameterList",
                                "src": "1328:71:57"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "amountOut",
                                            "overrides": null,
                                            "scope": 7243,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint",
                                                    "type": "uint256"
                                                },
                                                "id": 7193,
                                                "name": "ElementaryTypeName",
                                                "src": "1427:4:57"
                                            }
                                        ],
                                        "id": 7194,
                                        "name": "VariableDeclaration",
                                        "src": "1427:14:57"
                                    }
                                ],
                                "id": 7195,
                                "name": "ParameterList",
                                "src": "1426:16:57"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "assignments": [
                                                7197,
                                                7199
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "pairAddr",
                                                    "overrides": null,
                                                    "scope": 7242,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "address",
                                                    "value": null,
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "address",
                                                            "stateMutability": "nonpayable",
                                                            "type": "address"
                                                        },
                                                        "id": 7196,
                                                        "name": "ElementaryTypeName",
                                                        "src": "1448:7:57"
                                                    }
                                                ],
                                                "id": 7197,
                                                "name": "VariableDeclaration",
                                                "src": "1448:16:57"
                                            },
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "feeK",
                                                    "overrides": null,
                                                    "scope": 7242,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "uint256",
                                                    "value": null,
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "uint",
                                                            "type": "uint256"
                                                        },
                                                        "id": 7198,
                                                        "name": "ElementaryTypeName",
                                                        "src": "1466:4:57"
                                                    }
                                                ],
                                                "id": 7199,
                                                "name": "VariableDeclaration",
                                                "src": "1466:9:57"
                                            },
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple(address,uint256)",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                                    "typeString": "bytes calldata"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7182,
                                                            "type": "function (bytes memory) pure returns (address,uint256)",
                                                            "value": "parseData"
                                                        },
                                                        "id": 7200,
                                                        "name": "Identifier",
                                                        "src": "1479:9:57"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7190,
                                                            "type": "bytes calldata",
                                                            "value": "data"
                                                        },
                                                        "id": 7201,
                                                        "name": "Identifier",
                                                        "src": "1489:4:57"
                                                    }
                                                ],
                                                "id": 7202,
                                                "name": "FunctionCall",
                                                "src": "1479:15:57"
                                            }
                                        ],
                                        "id": 7203,
                                        "name": "VariableDeclarationStatement",
                                        "src": "1447:47:57"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                7205
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "pair",
                                                    "overrides": null,
                                                    "scope": 7242,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "contract IUniswapV2Pair",
                                                    "value": null,
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "contractScope": null,
                                                            "name": "IUniswapV2Pair",
                                                            "referencedDeclaration": 2705,
                                                            "type": "contract IUniswapV2Pair"
                                                        },
                                                        "id": 7204,
                                                        "name": "UserDefinedTypeName",
                                                        "src": "1498:14:57"
                                                    }
                                                ],
                                                "id": 7205,
                                                "name": "VariableDeclaration",
                                                "src": "1498:19:57"
                                            },
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "contract IUniswapV2Pair",
                                                    "type_conversion": true
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 2705,
                                                            "type": "type(contract IUniswapV2Pair)",
                                                            "value": "IUniswapV2Pair"
                                                        },
                                                        "id": 7206,
                                                        "name": "Identifier",
                                                        "src": "1520:14:57"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7197,
                                                            "type": "address",
                                                            "value": "pairAddr"
                                                        },
                                                        "id": 7207,
                                                        "name": "Identifier",
                                                        "src": "1535:8:57"
                                                    }
                                                ],
                                                "id": 7208,
                                                "name": "FunctionCall",
                                                "src": "1520:24:57"
                                            }
                                        ],
                                        "id": 7209,
                                        "name": "VariableDeclarationStatement",
                                        "src": "1498:46:57"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                7211,
                                                7213,
                                                null
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "reserve0",
                                                    "overrides": null,
                                                    "scope": 7242,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "uint256",
                                                    "value": null,
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "uint",
                                                            "type": "uint256"
                                                        },
                                                        "id": 7210,
                                                        "name": "ElementaryTypeName",
                                                        "src": "1549:4:57"
                                                    }
                                                ],
                                                "id": 7211,
                                                "name": "VariableDeclaration",
                                                "src": "1549:13:57"
                                            },
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "reserve1",
                                                    "overrides": null,
                                                    "scope": 7242,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "uint256",
                                                    "value": null,
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "uint",
                                                            "type": "uint256"
                                                        },
                                                        "id": 7212,
                                                        "name": "ElementaryTypeName",
                                                        "src": "1564:4:57"
                                                    }
                                                ],
                                                "id": 7213,
                                                "name": "VariableDeclaration",
                                                "src": "1564:13:57"
                                            },
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                        null
                                                    ],
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple(uint112,uint112,uint32)",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                null
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "getReserves",
                                                            "referencedDeclaration": 2647,
                                                            "type": "function () view external returns (uint112,uint112,uint32)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 7205,
                                                                    "type": "contract IUniswapV2Pair",
                                                                    "value": "pair"
                                                                },
                                                                "id": 7214,
                                                                "name": "Identifier",
                                                                "src": "1582:4:57"
                                                            }
                                                        ],
                                                        "id": 7215,
                                                        "name": "MemberAccess",
                                                        "src": "1582:16:57"
                                                    }
                                                ],
                                                "id": 7216,
                                                "name": "FunctionCall",
                                                "src": "1582:18:57"
                                            }
                                        ],
                                        "id": 7217,
                                        "name": "VariableDeclarationStatement",
                                        "src": "1548:52:57"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                7219,
                                                7221
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "reserveIn",
                                                    "overrides": null,
                                                    "scope": 7242,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "uint256",
                                                    "value": null,
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "uint",
                                                            "type": "uint256"
                                                        },
                                                        "id": 7218,
                                                        "name": "ElementaryTypeName",
                                                        "src": "1605:4:57"
                                                    }
                                                ],
                                                "id": 7219,
                                                "name": "VariableDeclaration",
                                                "src": "1605:14:57"
                                            },
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "reserveOut",
                                                    "overrides": null,
                                                    "scope": 7242,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "uint256",
                                                    "value": null,
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "uint",
                                                            "type": "uint256"
                                                        },
                                                        "id": 7220,
                                                        "name": "ElementaryTypeName",
                                                        "src": "1621:4:57"
                                                    }
                                                ],
                                                "id": 7221,
                                                "name": "VariableDeclaration",
                                                "src": "1621:15:57"
                                            },
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "type": "tuple(uint256,uint256)"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "==",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "arguments": [
                                                                        null
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "address",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                null
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "token0",
                                                                            "referencedDeclaration": 2633,
                                                                            "type": "function () view external returns (address)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 7205,
                                                                                    "type": "contract IUniswapV2Pair",
                                                                                    "value": "pair"
                                                                                },
                                                                                "id": 7222,
                                                                                "name": "Identifier",
                                                                                "src": "1640:4:57"
                                                                            }
                                                                        ],
                                                                        "id": 7223,
                                                                        "name": "MemberAccess",
                                                                        "src": "1640:11:57"
                                                                    }
                                                                ],
                                                                "id": 7224,
                                                                "name": "FunctionCall",
                                                                "src": "1640:13:57"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 7184,
                                                                    "type": "address",
                                                                    "value": "input"
                                                                },
                                                                "id": 7225,
                                                                "name": "Identifier",
                                                                "src": "1657:5:57"
                                                            }
                                                        ],
                                                        "id": 7226,
                                                        "name": "BinaryOperation",
                                                        "src": "1640:22:57"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "isConstant": false,
                                                            "isInlineArray": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "type": "tuple(uint256,uint256)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 7211,
                                                                    "type": "uint256",
                                                                    "value": "reserve0"
                                                                },
                                                                "id": 7227,
                                                                "name": "Identifier",
                                                                "src": "1666:8:57"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 7213,
                                                                    "type": "uint256",
                                                                    "value": "reserve1"
                                                                },
                                                                "id": 7228,
                                                                "name": "Identifier",
                                                                "src": "1676:8:57"
                                                            }
                                                        ],
                                                        "id": 7229,
                                                        "name": "TupleExpression",
                                                        "src": "1665:20:57"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "isConstant": false,
                                                            "isInlineArray": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "type": "tuple(uint256,uint256)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 7213,
                                                                    "type": "uint256",
                                                                    "value": "reserve1"
                                                                },
                                                                "id": 7230,
                                                                "name": "Identifier",
                                                                "src": "1689:8:57"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 7211,
                                                                    "type": "uint256",
                                                                    "value": "reserve0"
                                                                },
                                                                "id": 7231,
                                                                "name": "Identifier",
                                                                "src": "1699:8:57"
                                                            }
                                                        ],
                                                        "id": 7232,
                                                        "name": "TupleExpression",
                                                        "src": "1688:20:57"
                                                    }
                                                ],
                                                "id": 7233,
                                                "name": "Conditional",
                                                "src": "1640:68:57"
                                            }
                                        ],
                                        "id": 7234,
                                        "name": "VariableDeclarationStatement",
                                        "src": "1604:104:57"
                                    },
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 7195
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "uint256",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7287,
                                                            "type": "function (uint256,uint256,uint256,uint256) pure returns (uint256)",
                                                            "value": "getAmountOut"
                                                        },
                                                        "id": 7235,
                                                        "name": "Identifier",
                                                        "src": "1719:12:57"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7188,
                                                            "type": "uint256",
                                                            "value": "amountIn"
                                                        },
                                                        "id": 7236,
                                                        "name": "Identifier",
                                                        "src": "1732:8:57"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7219,
                                                            "type": "uint256",
                                                            "value": "reserveIn"
                                                        },
                                                        "id": 7237,
                                                        "name": "Identifier",
                                                        "src": "1742:9:57"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7221,
                                                            "type": "uint256",
                                                            "value": "reserveOut"
                                                        },
                                                        "id": 7238,
                                                        "name": "Identifier",
                                                        "src": "1753:10:57"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7199,
                                                            "type": "uint256",
                                                            "value": "feeK"
                                                        },
                                                        "id": 7239,
                                                        "name": "Identifier",
                                                        "src": "1765:4:57"
                                                    }
                                                ],
                                                "id": 7240,
                                                "name": "FunctionCall",
                                                "src": "1719:51:57"
                                            }
                                        ],
                                        "id": 7241,
                                        "name": "Return",
                                        "src": "1712:58:57"
                                    }
                                ],
                                "id": 7242,
                                "name": "Block",
                                "src": "1443:331:57"
                            }
                        ],
                        "id": 7243,
                        "name": "FunctionDefinition",
                        "src": "1304:470:57"
                    },
                    {
                        "attributes": {
                            "documentation": null,
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "getAmountOut",
                            "overrides": null,
                            "scope": 7292,
                            "stateMutability": "pure",
                            "virtual": false,
                            "visibility": "internal"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "amountIn",
                                            "overrides": null,
                                            "scope": 7287,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint",
                                                    "type": "uint256"
                                                },
                                                "id": 7244,
                                                "name": "ElementaryTypeName",
                                                "src": "1799:4:57"
                                            }
                                        ],
                                        "id": 7245,
                                        "name": "VariableDeclaration",
                                        "src": "1799:13:57"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "reserveIn",
                                            "overrides": null,
                                            "scope": 7287,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint",
                                                    "type": "uint256"
                                                },
                                                "id": 7246,
                                                "name": "ElementaryTypeName",
                                                "src": "1814:4:57"
                                            }
                                        ],
                                        "id": 7247,
                                        "name": "VariableDeclaration",
                                        "src": "1814:14:57"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "reserveOut",
                                            "overrides": null,
                                            "scope": 7287,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint",
                                                    "type": "uint256"
                                                },
                                                "id": 7248,
                                                "name": "ElementaryTypeName",
                                                "src": "1830:4:57"
                                            }
                                        ],
                                        "id": 7249,
                                        "name": "VariableDeclaration",
                                        "src": "1830:15:57"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "feeK",
                                            "overrides": null,
                                            "scope": 7287,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint",
                                                    "type": "uint256"
                                                },
                                                "id": 7250,
                                                "name": "ElementaryTypeName",
                                                "src": "1847:4:57"
                                            }
                                        ],
                                        "id": 7251,
                                        "name": "VariableDeclaration",
                                        "src": "1847:9:57"
                                    }
                                ],
                                "id": 7252,
                                "name": "ParameterList",
                                "src": "1798:59:57"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "amountOut",
                                            "overrides": null,
                                            "scope": 7287,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint",
                                                    "type": "uint256"
                                                },
                                                "id": 7253,
                                                "name": "ElementaryTypeName",
                                                "src": "1881:4:57"
                                            }
                                        ],
                                        "id": 7254,
                                        "name": "VariableDeclaration",
                                        "src": "1881:14:57"
                                    }
                                ],
                                "id": 7255,
                                "name": "ParameterList",
                                "src": "1880:16:57"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "assignments": [
                                                7257
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "amountInWithFee",
                                                    "overrides": null,
                                                    "scope": 7286,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "uint256",
                                                    "value": null,
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "uint",
                                                            "type": "uint256"
                                                        },
                                                        "id": 7256,
                                                        "name": "ElementaryTypeName",
                                                        "src": "1901:4:57"
                                                    }
                                                ],
                                                "id": 7257,
                                                "name": "VariableDeclaration",
                                                "src": "1901:20:57"
                                            },
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "uint256",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "mul",
                                                            "referencedDeclaration": 131,
                                                            "type": "function (uint256,uint256) pure returns (uint256)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 7245,
                                                                    "type": "uint256",
                                                                    "value": "amountIn"
                                                                },
                                                                "id": 7258,
                                                                "name": "Identifier",
                                                                "src": "1924:8:57"
                                                            }
                                                        ],
                                                        "id": 7259,
                                                        "name": "MemberAccess",
                                                        "src": "1924:12:57"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7251,
                                                            "type": "uint256",
                                                            "value": "feeK"
                                                        },
                                                        "id": 7260,
                                                        "name": "Identifier",
                                                        "src": "1937:4:57"
                                                    }
                                                ],
                                                "id": 7261,
                                                "name": "FunctionCall",
                                                "src": "1924:18:57"
                                            }
                                        ],
                                        "id": 7262,
                                        "name": "VariableDeclarationStatement",
                                        "src": "1901:41:57"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                7264
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "numerator",
                                                    "overrides": null,
                                                    "scope": 7286,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "uint256",
                                                    "value": null,
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "uint",
                                                            "type": "uint256"
                                                        },
                                                        "id": 7263,
                                                        "name": "ElementaryTypeName",
                                                        "src": "1946:4:57"
                                                    }
                                                ],
                                                "id": 7264,
                                                "name": "VariableDeclaration",
                                                "src": "1946:14:57"
                                            },
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "uint256",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "mul",
                                                            "referencedDeclaration": 131,
                                                            "type": "function (uint256,uint256) pure returns (uint256)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 7257,
                                                                    "type": "uint256",
                                                                    "value": "amountInWithFee"
                                                                },
                                                                "id": 7265,
                                                                "name": "Identifier",
                                                                "src": "1963:15:57"
                                                            }
                                                        ],
                                                        "id": 7266,
                                                        "name": "MemberAccess",
                                                        "src": "1963:19:57"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7249,
                                                            "type": "uint256",
                                                            "value": "reserveOut"
                                                        },
                                                        "id": 7267,
                                                        "name": "Identifier",
                                                        "src": "1983:10:57"
                                                    }
                                                ],
                                                "id": 7268,
                                                "name": "FunctionCall",
                                                "src": "1963:31:57"
                                            }
                                        ],
                                        "id": 7269,
                                        "name": "VariableDeclarationStatement",
                                        "src": "1946:48:57"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                7271
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "denominator",
                                                    "overrides": null,
                                                    "scope": 7286,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "uint256",
                                                    "value": null,
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "uint",
                                                            "type": "uint256"
                                                        },
                                                        "id": 7270,
                                                        "name": "ElementaryTypeName",
                                                        "src": "1998:4:57"
                                                    }
                                                ],
                                                "id": 7271,
                                                "name": "VariableDeclaration",
                                                "src": "1998:16:57"
                                            },
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "uint256",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "add",
                                                            "referencedDeclaration": 51,
                                                            "type": "function (uint256,uint256) pure returns (uint256)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "uint256",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_rational_10000_by_1",
                                                                                    "typeString": "int_const 10000"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "mul",
                                                                            "referencedDeclaration": 131,
                                                                            "type": "function (uint256,uint256) pure returns (uint256)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 7247,
                                                                                    "type": "uint256",
                                                                                    "value": "reserveIn"
                                                                                },
                                                                                "id": 7272,
                                                                                "name": "Identifier",
                                                                                "src": "2017:9:57"
                                                                            }
                                                                        ],
                                                                        "id": 7273,
                                                                        "name": "MemberAccess",
                                                                        "src": "2017:13:57"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "hexvalue": "3130303030",
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "subdenomination": null,
                                                                            "token": "number",
                                                                            "type": "int_const 10000",
                                                                            "value": "10000"
                                                                        },
                                                                        "id": 7274,
                                                                        "name": "Literal",
                                                                        "src": "2031:5:57"
                                                                    }
                                                                ],
                                                                "id": 7275,
                                                                "name": "FunctionCall",
                                                                "src": "2017:20:57"
                                                            }
                                                        ],
                                                        "id": 7276,
                                                        "name": "MemberAccess",
                                                        "src": "2017:24:57"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7257,
                                                            "type": "uint256",
                                                            "value": "amountInWithFee"
                                                        },
                                                        "id": 7277,
                                                        "name": "Identifier",
                                                        "src": "2042:15:57"
                                                    }
                                                ],
                                                "id": 7278,
                                                "name": "FunctionCall",
                                                "src": "2017:41:57"
                                            }
                                        ],
                                        "id": 7279,
                                        "name": "VariableDeclarationStatement",
                                        "src": "1998:60:57"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "uint256"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7254,
                                                            "type": "uint256",
                                                            "value": "amountOut"
                                                        },
                                                        "id": 7280,
                                                        "name": "Identifier",
                                                        "src": "2062:9:57"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "/",
                                                            "type": "uint256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 7264,
                                                                    "type": "uint256",
                                                                    "value": "numerator"
                                                                },
                                                                "id": 7281,
                                                                "name": "Identifier",
                                                                "src": "2074:9:57"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 7271,
                                                                    "type": "uint256",
                                                                    "value": "denominator"
                                                                },
                                                                "id": 7282,
                                                                "name": "Identifier",
                                                                "src": "2086:11:57"
                                                            }
                                                        ],
                                                        "id": 7283,
                                                        "name": "BinaryOperation",
                                                        "src": "2074:23:57"
                                                    }
                                                ],
                                                "id": 7284,
                                                "name": "Assignment",
                                                "src": "2062:35:57"
                                            }
                                        ],
                                        "id": 7285,
                                        "name": "ExpressionStatement",
                                        "src": "2062:35:57"
                                    }
                                ],
                                "id": 7286,
                                "name": "Block",
                                "src": "1897:206:57"
                            }
                        ],
                        "id": 7287,
                        "name": "FunctionDefinition",
                        "src": "1777:326:57"
                    },
                    {
                        "attributes": {
                            "documentation": null,
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "receive",
                            "modifiers": [
                                null
                            ],
                            "name": "",
                            "overrides": null,
                            "scope": 7292,
                            "stateMutability": "payable",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 7288,
                                "name": "ParameterList",
                                "src": "2113:2:57"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 7289,
                                "name": "ParameterList",
                                "src": "2133:0:57"
                            },
                            {
                                "attributes": {
                                    "statements": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 7290,
                                "name": "Block",
                                "src": "2133:2:57"
                            }
                        ],
                        "id": 7291,
                        "name": "FunctionDefinition",
                        "src": "2106:29:57"
                    }
                ],
                "id": 7292,
                "name": "ContractDefinition",
                "src": "246:1891:57"
            }
        ],
        "id": 7293,
        "name": "SourceUnit",
        "src": "32:2106:57"
    },
    "compiler": {
        "name": "solc",
        "version": "0.6.8+commit.0bbfe453.Emscripten.clang"
    },
    "networks": {},
    "schemaVersion": "3.4.16",
    "updatedAt": "2025-02-07T17:50:42.845Z",
    "devdoc": {
        "methods": {}
    },
    "userdoc": {
        "methods": {}
    }
}
