{
  "contractName": "MoonwalkerswapV2Migrator",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_factoryV1",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_router",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amountTokenMin",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amountETHMin",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "migrate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factoryV1\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_router\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/Moonwalkerswap-v2-periphery/contracts/MoonwalkerswapV2Migrator.sol\":\"MoonwalkerswapV2Migrator\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/Moonwalkerswap-v2-periphery/contracts/MoonwalkerswapV2Migrator.sol\":{\"keccak256\":\"0x18db3b0af2a7762501ba9d120831c0c2b42784f527781b1b33bf1fe36d60f73a\",\"urls\":[\"bzz-raw://f80d9c0082ba979380372df82bd891e0687b00ac790e4d745179dfcc1d463aef\",\"dweb:/ipfs/QmfPRxUHSNmqdrVgFAov6Yv5CZ3ybgSuGkwARXWcASFs6R\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/Moonwalkerswap-v2-periphery/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x61db17aebc5d812c7002d15c1da954065e56abe49d64b14c034abe5604d70eb3\",\"urls\":[\"bzz-raw://b006685e753f9120469f10b09c159f222d4cb8b507a6c1f0c14ed50c883ebe66\",\"dweb:/ipfs/QmSyY7iTugbczPwfGK67etiyPULenYGzzRYbt8aabwwkUb\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/Moonwalkerswap-v2-periphery/contracts/interfaces/IMoonwalkerswapV2Migrator.sol\":{\"keccak256\":\"0x38d7aea5942b3e335de97be62433ce7bef345fe49bcebb946b6c676a69bb2ab6\",\"urls\":[\"bzz-raw://de004ccf513484acfb2b7af9f9f7453d3caa3471b44d9f0daa9db9a4dff40590\",\"dweb:/ipfs/QmNWDZomMPBFnGse9CLyqGUn7Rbu326Ys7mZwPGvkAxJ9D\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/Moonwalkerswap-v2-periphery/contracts/interfaces/IMoonwalkerswapV2Router01.sol\":{\"keccak256\":\"0xca122eb08288a7222f98a734e2ad9a338bf02293d0894dc7f1d8dcbd808eef4c\",\"urls\":[\"bzz-raw://1c596c0213ac56f727eaaa15208e68a61a3eabd5351a59de7cabc171213faa8f\",\"dweb:/ipfs/QmPCMAZUk5uuQAHWyBQ68kPhdSUcecQDctvfaUHDaNT28K\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/Moonwalkerswap-v2-periphery/contracts/interfaces/V1/IMoonwalkerswapV1Exchange.sol\":{\"keccak256\":\"0x2788c69fa93f52896bb4eaf5eba53f1a3a6f0ad6bf279638e6a4ba4654f32849\",\"urls\":[\"bzz-raw://3ddd98f3b9f1575bf1aadfcd871e466bd9b604d7bcce4eef78c02d18caab26bf\",\"dweb:/ipfs/QmbQtYPJYcZBLYJGBRoaLKHj6HhnQ4EKV4X3348KfooNXm\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/Moonwalkerswap-v2-periphery/contracts/interfaces/V1/IMoonwalkerswapV1Factory.sol\":{\"keccak256\":\"0xbfb8fca4335994a5042028071385b1d21e186ea3bacc102ec75875bf78e68741\",\"urls\":[\"bzz-raw://1f707903f7366258f445367f29231c910854a47771c2ca21315fd36cdf906b55\",\"dweb:/ipfs/QmXHz64F3abcEVPUaQTYkWbJQNp1xwzyXGhzWaQLsF39rc\"]},\"moonwalkerswap-libraries/contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0xaff99b54915f57e2a4e71b8d15afd4ee425410e5a6f45c07517ae1beb806f8bd\",\"urls\":[\"bzz-raw://15432ec031f4cfa6709921289e198b030a0c5eac75b5a3e0eb64827a2b3b5595\",\"dweb:/ipfs/QmZvR1KuuDvuzXFiADCngTKyMCTy31uhq9U6CazP59B55j\"]}},\"version\":1}",
  "bytecode": "0x60c060405234801561001057600080fd5b506040516109443803806109448339818101604052604081101561003357600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c6108bd6100876000398061030752806103775280610409525080608352506108bd6000f3fe6080604052600436106100225760003560e01c8063b7df1d251461002e57610029565b3661002957005b600080fd5b34801561003a57600080fd5b5061007d600480360360a081101561005157600080fd5b506001600160a01b0381358116916020810135916040820135916060810135909116906080013561007f565b005b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306f2bf62876040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156100f757600080fd5b505afa15801561010b573d6000803e3d6000fd5b505050506040513d602081101561012157600080fd5b5051604080516370a0823160e01b815233600482015290519192506000916001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561016f57600080fd5b505afa158015610183573d6000803e3d6000fd5b505050506040513d602081101561019957600080fd5b5051604080516323b872dd60e01b81523360048201523060248201526044810183905290519192506001600160a01b038416916323b872dd916064808201926020929091908290030181600087803b1580156101f457600080fd5b505af1158015610208573d6000803e3d6000fd5b505050506040513d602081101561021e57600080fd5b5051610268576040805162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b604482015290519081900360640190fd5b60408051637c45f8ad60e11b81526004810183905260016024820181905260448201526000196064820152815160009283926001600160a01b0387169263f88bf15a9260848084019391929182900301818787803b1580156102c957600080fd5b505af11580156102dd573d6000803e3d6000fd5b505050506040513d60408110156102f357600080fd5b508051602090910151909250905061032c897f000000000000000000000000000000000000000000000000000000000000000083610462565b6040805163f305d71960e01b81526001600160a01b038b8116600483015260248201849052604482018b9052606482018a9052888116608483015260a48201889052915160009283927f00000000000000000000000000000000000000000000000000000000000000009091169163f305d71991879160c480830192606092919082900301818588803b1580156103c257600080fd5b505af11580156103d6573d6000803e3d6000fd5b50505050506040513d60608110156103ed57600080fd5b5080516020909101519092509050818311156104415761042f8b7f00000000000000000000000000000000000000000000000000000000000000006000610462565b61043c8b338486036105b6565b610455565b808411156104555761045533828603610703565b5050505050505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b178152925182516000946060949389169392918291908083835b602083106104df5780518252601f1990920191602091820191016104c0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610541576040519150601f19603f3d011682016040523d82523d6000602084013e610546565b606091505b5091509150818015610574575080511580610574575080806020019051602081101561057157600080fd5b50515b6105af5760405162461bcd60e51b815260040180806020018281038252602b815260200180610830602b913960400191505060405180910390fd5b5050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106106335780518252601f199092019160209182019101610614565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610695576040519150601f19603f3d011682016040523d82523d6000602084013e61069a565b606091505b50915091508180156106c85750805115806106c857508080602001905160208110156106c557600080fd5b50515b6105af5760405162461bcd60e51b815260040180806020018281038252602d81526020018061085b602d913960400191505060405180910390fd5b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b6020831061074f5780518252601f199092019160209182019101610730565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146107b1576040519150601f19603f3d011682016040523d82523d6000602084013e6107b6565b606091505b50509050806107f65760405162461bcd60e51b81526004018080602001828103825260348152602001806107fc6034913960400191505060405180910390fd5b50505056fe5472616e7366657248656c7065723a3a736166655472616e736665724554483a20455448207472616e73666572206661696c65645472616e7366657248656c7065723a3a73616665417070726f76653a20617070726f7665206661696c65645472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c6564a26469706673582212201326fb2c417c9636409a48754a8b6537195c7f1a00d30a6510100635e74c10fc64736f6c63430006060033",
  "deployedBytecode": "0x6080604052600436106100225760003560e01c8063b7df1d251461002e57610029565b3661002957005b600080fd5b34801561003a57600080fd5b5061007d600480360360a081101561005157600080fd5b506001600160a01b0381358116916020810135916040820135916060810135909116906080013561007f565b005b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306f2bf62876040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156100f757600080fd5b505afa15801561010b573d6000803e3d6000fd5b505050506040513d602081101561012157600080fd5b5051604080516370a0823160e01b815233600482015290519192506000916001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561016f57600080fd5b505afa158015610183573d6000803e3d6000fd5b505050506040513d602081101561019957600080fd5b5051604080516323b872dd60e01b81523360048201523060248201526044810183905290519192506001600160a01b038416916323b872dd916064808201926020929091908290030181600087803b1580156101f457600080fd5b505af1158015610208573d6000803e3d6000fd5b505050506040513d602081101561021e57600080fd5b5051610268576040805162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b604482015290519081900360640190fd5b60408051637c45f8ad60e11b81526004810183905260016024820181905260448201526000196064820152815160009283926001600160a01b0387169263f88bf15a9260848084019391929182900301818787803b1580156102c957600080fd5b505af11580156102dd573d6000803e3d6000fd5b505050506040513d60408110156102f357600080fd5b508051602090910151909250905061032c897f000000000000000000000000000000000000000000000000000000000000000083610462565b6040805163f305d71960e01b81526001600160a01b038b8116600483015260248201849052604482018b9052606482018a9052888116608483015260a48201889052915160009283927f00000000000000000000000000000000000000000000000000000000000000009091169163f305d71991879160c480830192606092919082900301818588803b1580156103c257600080fd5b505af11580156103d6573d6000803e3d6000fd5b50505050506040513d60608110156103ed57600080fd5b5080516020909101519092509050818311156104415761042f8b7f00000000000000000000000000000000000000000000000000000000000000006000610462565b61043c8b338486036105b6565b610455565b808411156104555761045533828603610703565b5050505050505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b178152925182516000946060949389169392918291908083835b602083106104df5780518252601f1990920191602091820191016104c0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610541576040519150601f19603f3d011682016040523d82523d6000602084013e610546565b606091505b5091509150818015610574575080511580610574575080806020019051602081101561057157600080fd5b50515b6105af5760405162461bcd60e51b815260040180806020018281038252602b815260200180610830602b913960400191505060405180910390fd5b5050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106106335780518252601f199092019160209182019101610614565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610695576040519150601f19603f3d011682016040523d82523d6000602084013e61069a565b606091505b50915091508180156106c85750805115806106c857508080602001905160208110156106c557600080fd5b50515b6105af5760405162461bcd60e51b815260040180806020018281038252602d81526020018061085b602d913960400191505060405180910390fd5b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b6020831061074f5780518252601f199092019160209182019101610730565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146107b1576040519150601f19603f3d011682016040523d82523d6000602084013e6107b6565b606091505b50509050806107f65760405162461bcd60e51b81526004018080602001828103825260348152602001806107fc6034913960400191505060405180910390fd5b50505056fe5472616e7366657248656c7065723a3a736166655472616e736665724554483a20455448207472616e73666572206661696c65645472616e7366657248656c7065723a3a73616665417070726f76653a20617070726f7665206661696c65645472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c6564a26469706673582212201326fb2c417c9636409a48754a8b6537195c7f1a00d30a6510100635e74c10fc64736f6c63430006060033",
  "immutableReferences": {
    "11": [
      {
        "length": 32,
        "start": 131
      }
    ],
    "13": [
      {
        "length": 32,
        "start": 775
      },
      {
        "length": 32,
        "start": 887
      },
      {
        "length": 32,
        "start": 1033
      }
    ]
  },
  "sourceMap": "352:1742:0:-:0;;;520:174;5:9:-1;2:2;;;27:1;24;17:12;2:2;520:174:0;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;520:174:0;;;;;;;-1:-1:-1;;;;;;586:48:0;;;;;;;;644:43;;;;;352:1742;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "352:1742:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;735:1357:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;735:1357:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;735:1357:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;882:36;947:9;-1:-1:-1;;;;;947:21:0;;969:5;947:28;;;;;;;;;;;;;-1:-1:-1;;;;;947:28:0;-1:-1:-1;;;;;947:28:0;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;947:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;947:28:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;947:28:0;1005:32;;;-1:-1:-1;;;1005:32:0;;1026:10;1005:32;;;;;;947:28;;-1:-1:-1;986:16:0;;-1:-1:-1;;;;;1005:20:0;;;;;:32;;;;;947:28;;1005:32;;;;;;;:20;:32;;;2:2:-1;;;;27:1;24;17:12;2:2;1005:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1005:32:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1005:32:0;1055:63;;;-1:-1:-1;;;1055:63:0;;1079:10;1055:63;;;;1099:4;1055:63;;;;;;;;;;;;1005:32;;-1:-1:-1;;;;;;1055:23:0;;;;;:63;;;;;1005:32;;1055:63;;;;;;;;-1:-1:-1;1055:23:0;:63;;;2:2:-1;;;;27:1;24;17:12;2:2;1055:63:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1055:63:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1055:63:0;1047:96;;;;;-1:-1:-1;;;1047:96:0;;;;;;;;;;;;-1:-1:-1;;;1047:96:0;;;;;;;;;;;;;;;1194:55;;;-1:-1:-1;;;1194:55:0;;;;;;;;1234:1;1194:55;;;;;;;;;;-1:-1:-1;;1194:55:0;;;;;;1154:16;;;;-1:-1:-1;;;;;1194:26:0;;;;;:55;;;;;;;;;;;;;1154:16;1194:26;:55;;;2:2:-1;;;;27:1;24;17:12;2:2;1194:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1194:55:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1194:55:0;;;;;;;;;-1:-1:-1;1194:55:0;-1:-1:-1;1259:65:0;1286:5;1301:6;1194:55;1259:26;:65::i;:::-;1376:190;;;-1:-1:-1;;;1376:190:0;;-1:-1:-1;;;;;1376:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;1376:6:0;:22;;;;;;1406:11;;1376:190;;;;;;;;;;;;;;1406:11;1376:22;:190;;;2:2:-1;;;;27:1;24;17:12;2:2;1376:190:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1376:190:0;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1376:190:0;;;;;;;;;-1:-1:-1;1376:190:0;-1:-1:-1;1580:29:0;;;1576:510;;;1625:53;1652:5;1667:6;1676:1;1625:26;:53::i;:::-;1746:77;1774:5;1781:10;1809:13;1793;:29;1746:27;:77::i;:::-;1576:510;;;1858:11;1844;:25;1840:246;;;2006:69;2037:10;2063:11;2049;:25;2006:30;:69::i;:::-;735:1357;;;;;;;;;;;:::o;212:434:6:-;436:45;;;-1:-1:-1;;;;;436:45:6;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;436:45:6;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;425:57:6;;;;390:12;;404:17;;425:10;;;;436:45;425:57;;;25:18:-1;425:57:6;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;425:57:6;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;389:93:6;;;;513:7;:57;;;;-1:-1:-1;525:11:6;;:16;;:44;;;556:4;545:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;545:24:6;525:44;492:147;;;;-1:-1:-1;;;492:147:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;212:434;;;;;:::o;652:438::-;878:45;;;-1:-1:-1;;;;;878:45:6;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;878:45:6;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;867:57:6;;;;832:12;;846:17;;867:10;;;;878:45;867:57;;;25:18:-1;867:57:6;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;867:57:6;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;831:93:6;;;;955:7;:57;;;;-1:-1:-1;967:11:6;;:16;;:44;;;998:4;987:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;987:24:6;967:44;934:149;;;;-1:-1:-1;;;934:149:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1588:214;1700:12;;;1660;1700;;;;;;;;;-1:-1:-1;;;;;1678:7:6;;;1693:5;;1678:35;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1678:35:6;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;1659:54:6;;;1731:7;1723:72;;;;-1:-1:-1;;;1723:72:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1588:214;;;:::o",
  "source": "pragma solidity =0.6.6;\n\nimport 'moonwalkerswap-libraries/contracts/libraries/TransferHelper.sol';\n\nimport './interfaces/IMoonwalkerswapV2Migrator.sol';\nimport './interfaces/V1/IMoonwalkerswapV1Factory.sol';\nimport './interfaces/V1/IMoonwalkerswapV1Exchange.sol';\nimport './interfaces/IMoonwalkerswapV2Router01.sol';\nimport './interfaces/IERC20.sol';\n\ncontract MoonwalkerswapV2Migrator is IMoonwalkerswapV2Migrator {\n    IMoonwalkerswapV1Factory immutable factoryV1;\n    IMoonwalkerswapV2Router01 immutable router;\n\n    constructor(address _factoryV1, address _router) public {\n        factoryV1 = IMoonwalkerswapV1Factory(_factoryV1);\n        router = IMoonwalkerswapV2Router01(_router);\n    }\n\n    receive() external payable {}\n\n    function migrate(address token, uint amountTokenMin, uint amountETHMin, address to, uint deadline)\n        external\n        override\n    {\n        IMoonwalkerswapV1Exchange exchangeV1 = IMoonwalkerswapV1Exchange(factoryV1.getExchange(token));\n        uint liquidityV1 = exchangeV1.balanceOf(msg.sender);\n        require(exchangeV1.transferFrom(msg.sender, address(this), liquidityV1), 'TRANSFER_FROM_FAILED');\n        (uint amountETHV1, uint amountTokenV1) = exchangeV1.removeLiquidity(liquidityV1, 1, 1, uint(-1));\n        TransferHelper.safeApprove(token, address(router), amountTokenV1);\n        (uint amountTokenV2, uint amountETHV2,) = router.addLiquidityETH{value: amountETHV1}(\n            token,\n            amountTokenV1,\n            amountTokenMin,\n            amountETHMin,\n            to,\n            deadline\n        );\n        if (amountTokenV1 > amountTokenV2) {\n            TransferHelper.safeApprove(token, address(router), 0); // be a good blockchain citizen, reset allowance to 0\n            TransferHelper.safeTransfer(token, msg.sender, amountTokenV1 - amountTokenV2);\n        } else if (amountETHV1 > amountETHV2) {\n            // addLiquidityETH guarantees that all of amountETHV1 or amountTokenV1 will be used, hence this else is safe\n            TransferHelper.safeTransferETH(msg.sender, amountETHV1 - amountETHV2);\n        }\n    }\n}\n",
  "sourcePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/Moonwalkerswap-v2-periphery/contracts/MoonwalkerswapV2Migrator.sol",
  "ast": {
    "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/Moonwalkerswap-v2-periphery/contracts/MoonwalkerswapV2Migrator.sol",
    "exportedSymbols": {
      "MoonwalkerswapV2Migrator": [
        169
      ]
    },
    "id": 170,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1,
        "literals": [
          "solidity",
          "=",
          "0.6",
          ".6"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:0"
      },
      {
        "absolutePath": "moonwalkerswap-libraries/contracts/libraries/TransferHelper.sol",
        "file": "moonwalkerswap-libraries/contracts/libraries/TransferHelper.sol",
        "id": 2,
        "nodeType": "ImportDirective",
        "scope": 170,
        "sourceUnit": 804,
        "src": "25:73:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/Moonwalkerswap-v2-periphery/contracts/interfaces/IMoonwalkerswapV2Migrator.sol",
        "file": "./interfaces/IMoonwalkerswapV2Migrator.sol",
        "id": 3,
        "nodeType": "ImportDirective",
        "scope": 170,
        "sourceUnit": 270,
        "src": "100:52:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/Moonwalkerswap-v2-periphery/contracts/interfaces/V1/IMoonwalkerswapV1Factory.sol",
        "file": "./interfaces/V1/IMoonwalkerswapV1Factory.sol",
        "id": 4,
        "nodeType": "ImportDirective",
        "scope": 170,
        "sourceUnit": 644,
        "src": "153:54:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/Moonwalkerswap-v2-periphery/contracts/interfaces/V1/IMoonwalkerswapV1Exchange.sol",
        "file": "./interfaces/V1/IMoonwalkerswapV1Exchange.sol",
        "id": 5,
        "nodeType": "ImportDirective",
        "scope": 170,
        "sourceUnit": 634,
        "src": "208:55:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/Moonwalkerswap-v2-periphery/contracts/interfaces/IMoonwalkerswapV2Router01.sol",
        "file": "./interfaces/IMoonwalkerswapV2Router01.sol",
        "id": 6,
        "nodeType": "ImportDirective",
        "scope": 170,
        "sourceUnit": 578,
        "src": "264:52:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/Moonwalkerswap-v2-periphery/contracts/interfaces/IERC20.sol",
        "file": "./interfaces/IERC20.sol",
        "id": 7,
        "nodeType": "ImportDirective",
        "scope": 170,
        "sourceUnit": 254,
        "src": "317:33:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8,
              "name": "IMoonwalkerswapV2Migrator",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 269,
              "src": "389:25:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IMoonwalkerswapV2Migrator_$269",
                "typeString": "contract IMoonwalkerswapV2Migrator"
              }
            },
            "id": 9,
            "nodeType": "InheritanceSpecifier",
            "src": "389:25:0"
          }
        ],
        "contractDependencies": [
          269
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 169,
        "linearizedBaseContracts": [
          169,
          269
        ],
        "name": "MoonwalkerswapV2Migrator",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 11,
            "mutability": "immutable",
            "name": "factoryV1",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 169,
            "src": "421:44:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IMoonwalkerswapV1Factory_$643",
              "typeString": "contract IMoonwalkerswapV1Factory"
            },
            "typeName": {
              "contractScope": null,
              "id": 10,
              "name": "IMoonwalkerswapV1Factory",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 643,
              "src": "421:24:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IMoonwalkerswapV1Factory_$643",
                "typeString": "contract IMoonwalkerswapV1Factory"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 13,
            "mutability": "immutable",
            "name": "router",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 169,
            "src": "471:42:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IMoonwalkerswapV2Router01_$577",
              "typeString": "contract IMoonwalkerswapV2Router01"
            },
            "typeName": {
              "contractScope": null,
              "id": 12,
              "name": "IMoonwalkerswapV2Router01",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 577,
              "src": "471:25:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IMoonwalkerswapV2Router01_$577",
                "typeString": "contract IMoonwalkerswapV2Router01"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 32,
              "nodeType": "Block",
              "src": "576:118:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 24,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 20,
                      "name": "factoryV1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11,
                      "src": "586:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IMoonwalkerswapV1Factory_$643",
                        "typeString": "contract IMoonwalkerswapV1Factory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 22,
                          "name": "_factoryV1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15,
                          "src": "623:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 21,
                        "name": "IMoonwalkerswapV1Factory",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 643,
                        "src": "598:24:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IMoonwalkerswapV1Factory_$643_$",
                          "typeString": "type(contract IMoonwalkerswapV1Factory)"
                        }
                      },
                      "id": 23,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "598:36:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IMoonwalkerswapV1Factory_$643",
                        "typeString": "contract IMoonwalkerswapV1Factory"
                      }
                    },
                    "src": "586:48:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IMoonwalkerswapV1Factory_$643",
                      "typeString": "contract IMoonwalkerswapV1Factory"
                    }
                  },
                  "id": 25,
                  "nodeType": "ExpressionStatement",
                  "src": "586:48:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 30,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 26,
                      "name": "router",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13,
                      "src": "644:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IMoonwalkerswapV2Router01_$577",
                        "typeString": "contract IMoonwalkerswapV2Router01"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 28,
                          "name": "_router",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17,
                          "src": "679:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 27,
                        "name": "IMoonwalkerswapV2Router01",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 577,
                        "src": "653:25:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IMoonwalkerswapV2Router01_$577_$",
                          "typeString": "type(contract IMoonwalkerswapV2Router01)"
                        }
                      },
                      "id": 29,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "653:34:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IMoonwalkerswapV2Router01_$577",
                        "typeString": "contract IMoonwalkerswapV2Router01"
                      }
                    },
                    "src": "644:43:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IMoonwalkerswapV2Router01_$577",
                      "typeString": "contract IMoonwalkerswapV2Router01"
                    }
                  },
                  "id": 31,
                  "nodeType": "ExpressionStatement",
                  "src": "644:43:0"
                }
              ]
            },
            "documentation": null,
            "id": 33,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 18,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15,
                  "mutability": "mutable",
                  "name": "_factoryV1",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33,
                  "src": "532:18:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "532:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17,
                  "mutability": "mutable",
                  "name": "_router",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 33,
                  "src": "552:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "552:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "531:37:0"
            },
            "returnParameters": {
              "id": 19,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "576:0:0"
            },
            "scope": 169,
            "src": "520:174:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 36,
              "nodeType": "Block",
              "src": "727:2:0",
              "statements": []
            },
            "documentation": null,
            "id": 37,
            "implemented": true,
            "kind": "receive",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 34,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "707:2:0"
            },
            "returnParameters": {
              "id": 35,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "727:0:0"
            },
            "scope": 169,
            "src": "700:29:0",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              268
            ],
            "body": {
              "id": 167,
              "nodeType": "Block",
              "src": "872:1220:0",
              "statements": [
                {
                  "assignments": [
                    52
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 52,
                      "mutability": "mutable",
                      "name": "exchangeV1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 167,
                      "src": "882:36:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IMoonwalkerswapV1Exchange_$633",
                        "typeString": "contract IMoonwalkerswapV1Exchange"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 51,
                        "name": "IMoonwalkerswapV1Exchange",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 633,
                        "src": "882:25:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMoonwalkerswapV1Exchange_$633",
                          "typeString": "contract IMoonwalkerswapV1Exchange"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 59,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 56,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39,
                            "src": "969:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 54,
                            "name": "factoryV1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11,
                            "src": "947:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMoonwalkerswapV1Factory_$643",
                              "typeString": "contract IMoonwalkerswapV1Factory"
                            }
                          },
                          "id": 55,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getExchange",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 642,
                          "src": "947:21:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                            "typeString": "function (address) view external returns (address)"
                          }
                        },
                        "id": 57,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "947:28:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 53,
                      "name": "IMoonwalkerswapV1Exchange",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 633,
                      "src": "921:25:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IMoonwalkerswapV1Exchange_$633_$",
                        "typeString": "type(contract IMoonwalkerswapV1Exchange)"
                      }
                    },
                    "id": 58,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "921:55:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IMoonwalkerswapV1Exchange_$633",
                      "typeString": "contract IMoonwalkerswapV1Exchange"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "882:94:0"
                },
                {
                  "assignments": [
                    61
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 61,
                      "mutability": "mutable",
                      "name": "liquidityV1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 167,
                      "src": "986:16:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 60,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "986:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 67,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 64,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "1026:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 65,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1026:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 62,
                        "name": "exchangeV1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 52,
                        "src": "1005:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMoonwalkerswapV1Exchange_$633",
                          "typeString": "contract IMoonwalkerswapV1Exchange"
                        }
                      },
                      "id": 63,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "balanceOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 586,
                      "src": "1005:20:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 66,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1005:32:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "986:51:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 71,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "1079:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 72,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1079:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 75,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "1099:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MoonwalkerswapV2Migrator_$169",
                                  "typeString": "contract MoonwalkerswapV2Migrator"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MoonwalkerswapV2Migrator_$169",
                                  "typeString": "contract MoonwalkerswapV2Migrator"
                                }
                              ],
                              "id": 74,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1091:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 73,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1091:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 76,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1091:13:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 77,
                            "name": "liquidityV1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 61,
                            "src": "1106:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 69,
                            "name": "exchangeV1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 52,
                            "src": "1055:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMoonwalkerswapV1Exchange_$633",
                              "typeString": "contract IMoonwalkerswapV1Exchange"
                            }
                          },
                          "id": 70,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 597,
                          "src": "1055:23:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 78,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1055:63:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5452414e534645525f46524f4d5f4641494c4544",
                        "id": 79,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1120:22:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_77631768048ee92f9dcf4b9b9d762877d6b9723214862c733f0596708fc219b7",
                          "typeString": "literal_string \"TRANSFER_FROM_FAILED\""
                        },
                        "value": "TRANSFER_FROM_FAILED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_77631768048ee92f9dcf4b9b9d762877d6b9723214862c733f0596708fc219b7",
                          "typeString": "literal_string \"TRANSFER_FROM_FAILED\""
                        }
                      ],
                      "id": 68,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1047:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 80,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1047:96:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 81,
                  "nodeType": "ExpressionStatement",
                  "src": "1047:96:0"
                },
                {
                  "assignments": [
                    83,
                    85
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 83,
                      "mutability": "mutable",
                      "name": "amountETHV1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 167,
                      "src": "1154:16:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 82,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1154:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 85,
                      "mutability": "mutable",
                      "name": "amountTokenV1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 167,
                      "src": "1172:18:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 84,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1172:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 97,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 88,
                        "name": "liquidityV1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 61,
                        "src": "1221:11:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 89,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1234:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 90,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1237:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 94,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "-",
                            "prefix": true,
                            "src": "1245:2:0",
                            "subExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 93,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1246:1:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_minus_1_by_1",
                              "typeString": "int_const -1"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_minus_1_by_1",
                              "typeString": "int_const -1"
                            }
                          ],
                          "id": 92,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1240:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 91,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "1240:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 95,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1240:8:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 86,
                        "name": "exchangeV1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 52,
                        "src": "1194:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMoonwalkerswapV1Exchange_$633",
                          "typeString": "contract IMoonwalkerswapV1Exchange"
                        }
                      },
                      "id": 87,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "removeLiquidity",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 612,
                      "src": "1194:26:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                        "typeString": "function (uint256,uint256,uint256,uint256) external returns (uint256,uint256)"
                      }
                    },
                    "id": 96,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1194:55:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1153:96:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 101,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 39,
                        "src": "1286:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 104,
                            "name": "router",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13,
                            "src": "1301:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMoonwalkerswapV2Router01_$577",
                              "typeString": "contract IMoonwalkerswapV2Router01"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IMoonwalkerswapV2Router01_$577",
                              "typeString": "contract IMoonwalkerswapV2Router01"
                            }
                          ],
                          "id": 103,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1293:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 102,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1293:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 105,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1293:15:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 106,
                        "name": "amountTokenV1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 85,
                        "src": "1310:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 98,
                        "name": "TransferHelper",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 803,
                        "src": "1259:14:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_TransferHelper_$803_$",
                          "typeString": "type(library TransferHelper)"
                        }
                      },
                      "id": 100,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "safeApprove",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 688,
                      "src": "1259:26:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 107,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1259:65:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 108,
                  "nodeType": "ExpressionStatement",
                  "src": "1259:65:0"
                },
                {
                  "assignments": [
                    110,
                    112,
                    null
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 110,
                      "mutability": "mutable",
                      "name": "amountTokenV2",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 167,
                      "src": "1335:18:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 109,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1335:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 112,
                      "mutability": "mutable",
                      "name": "amountETHV2",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 167,
                      "src": "1355:16:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 111,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1355:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    null
                  ],
                  "id": 124,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 117,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 39,
                        "src": "1432:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 118,
                        "name": "amountTokenV1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 85,
                        "src": "1451:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 119,
                        "name": "amountTokenMin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41,
                        "src": "1478:14:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 120,
                        "name": "amountETHMin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 43,
                        "src": "1506:12:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 121,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 45,
                        "src": "1532:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 122,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 47,
                        "src": "1548:8:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 113,
                          "name": "router",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13,
                          "src": "1376:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMoonwalkerswapV2Router01_$577",
                            "typeString": "contract IMoonwalkerswapV2Router01"
                          }
                        },
                        "id": 114,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "addLiquidityETH",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 327,
                        "src": "1376:22:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                          "typeString": "function (address,uint256,uint256,uint256,address,uint256) payable external returns (uint256,uint256,uint256)"
                        }
                      },
                      "id": 116,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "names": [
                        "value"
                      ],
                      "nodeType": "FunctionCallOptions",
                      "options": [
                        {
                          "argumentTypes": null,
                          "id": 115,
                          "name": "amountETHV1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 83,
                          "src": "1406:11:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "src": "1376:42:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$value",
                        "typeString": "function (address,uint256,uint256,uint256,address,uint256) payable external returns (uint256,uint256,uint256)"
                      }
                    },
                    "id": 123,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1376:190:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1334:232:0"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 127,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 125,
                      "name": "amountTokenV1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 85,
                      "src": "1580:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 126,
                      "name": "amountTokenV2",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 110,
                      "src": "1596:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1580:29:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 153,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 151,
                        "name": "amountETHV1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 83,
                        "src": "1844:11:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 152,
                        "name": "amountETHV2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 112,
                        "src": "1858:11:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "1844:25:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": null,
                    "id": 165,
                    "nodeType": "IfStatement",
                    "src": "1840:246:0",
                    "trueBody": {
                      "id": 164,
                      "nodeType": "Block",
                      "src": "1871:215:0",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 157,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "2037:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 158,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2037:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 161,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 159,
                                  "name": "amountETHV1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 83,
                                  "src": "2049:11:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 160,
                                  "name": "amountETHV2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 112,
                                  "src": "2063:11:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2049:25:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 154,
                                "name": "TransferHelper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 803,
                                "src": "2006:14:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_TransferHelper_$803_$",
                                  "typeString": "type(library TransferHelper)"
                                }
                              },
                              "id": 156,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "safeTransferETH",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 802,
                              "src": "2006:30:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                "typeString": "function (address,uint256)"
                              }
                            },
                            "id": 162,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2006:69:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 163,
                          "nodeType": "ExpressionStatement",
                          "src": "2006:69:0"
                        }
                      ]
                    }
                  },
                  "id": 166,
                  "nodeType": "IfStatement",
                  "src": "1576:510:0",
                  "trueBody": {
                    "id": 150,
                    "nodeType": "Block",
                    "src": "1611:223:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 131,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39,
                              "src": "1652:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 134,
                                  "name": "router",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13,
                                  "src": "1667:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IMoonwalkerswapV2Router01_$577",
                                    "typeString": "contract IMoonwalkerswapV2Router01"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IMoonwalkerswapV2Router01_$577",
                                    "typeString": "contract IMoonwalkerswapV2Router01"
                                  }
                                ],
                                "id": 133,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1659:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 132,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1659:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 135,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1659:15:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 136,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1676:1:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 128,
                              "name": "TransferHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 803,
                              "src": "1625:14:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TransferHelper_$803_$",
                                "typeString": "type(library TransferHelper)"
                              }
                            },
                            "id": 130,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeApprove",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 688,
                            "src": "1625:26:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 137,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1625:53:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 138,
                        "nodeType": "ExpressionStatement",
                        "src": "1625:53:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 142,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39,
                              "src": "1774:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 143,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1781:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 144,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1781:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 147,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 145,
                                "name": "amountTokenV1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 85,
                                "src": "1793:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 146,
                                "name": "amountTokenV2",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 110,
                                "src": "1809:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1793:29:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 139,
                              "name": "TransferHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 803,
                              "src": "1746:14:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TransferHelper_$803_$",
                                "typeString": "type(library TransferHelper)"
                              }
                            },
                            "id": 141,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 731,
                            "src": "1746:27:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 148,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1746:77:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 149,
                        "nodeType": "ExpressionStatement",
                        "src": "1746:77:0"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "functionSelector": "b7df1d25",
            "id": 168,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "migrate",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 49,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "859:8:0"
            },
            "parameters": {
              "id": 48,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 39,
                  "mutability": "mutable",
                  "name": "token",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 168,
                  "src": "752:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 38,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "752:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 41,
                  "mutability": "mutable",
                  "name": "amountTokenMin",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 168,
                  "src": "767:19:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 40,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "767:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 43,
                  "mutability": "mutable",
                  "name": "amountETHMin",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 168,
                  "src": "788:17:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 42,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "788:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 45,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 168,
                  "src": "807:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 44,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "807:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 47,
                  "mutability": "mutable",
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 168,
                  "src": "819:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 46,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "819:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "751:82:0"
            },
            "returnParameters": {
              "id": 50,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "872:0:0"
            },
            "scope": 169,
            "src": "735:1357:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 170,
        "src": "352:1742:0"
      }
    ],
    "src": "0:2095:0"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/Moonwalkerswap-v2-periphery/contracts/MoonwalkerswapV2Migrator.sol",
      "exportedSymbols": {
        "MoonwalkerswapV2Migrator": [
          169
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "=",
            "0.6",
            ".6"
          ]
        },
        "id": 1,
        "name": "PragmaDirective",
        "src": "0:23:0"
      },
      {
        "attributes": {
          "SourceUnit": 804,
          "absolutePath": "moonwalkerswap-libraries/contracts/libraries/TransferHelper.sol",
          "file": "moonwalkerswap-libraries/contracts/libraries/TransferHelper.sol",
          "scope": 170,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 2,
        "name": "ImportDirective",
        "src": "25:73:0"
      },
      {
        "attributes": {
          "SourceUnit": 270,
          "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/Moonwalkerswap-v2-periphery/contracts/interfaces/IMoonwalkerswapV2Migrator.sol",
          "file": "./interfaces/IMoonwalkerswapV2Migrator.sol",
          "scope": 170,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 3,
        "name": "ImportDirective",
        "src": "100:52:0"
      },
      {
        "attributes": {
          "SourceUnit": 644,
          "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/Moonwalkerswap-v2-periphery/contracts/interfaces/V1/IMoonwalkerswapV1Factory.sol",
          "file": "./interfaces/V1/IMoonwalkerswapV1Factory.sol",
          "scope": 170,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 4,
        "name": "ImportDirective",
        "src": "153:54:0"
      },
      {
        "attributes": {
          "SourceUnit": 634,
          "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/Moonwalkerswap-v2-periphery/contracts/interfaces/V1/IMoonwalkerswapV1Exchange.sol",
          "file": "./interfaces/V1/IMoonwalkerswapV1Exchange.sol",
          "scope": 170,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 5,
        "name": "ImportDirective",
        "src": "208:55:0"
      },
      {
        "attributes": {
          "SourceUnit": 578,
          "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/Moonwalkerswap-v2-periphery/contracts/interfaces/IMoonwalkerswapV2Router01.sol",
          "file": "./interfaces/IMoonwalkerswapV2Router01.sol",
          "scope": 170,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 6,
        "name": "ImportDirective",
        "src": "264:52:0"
      },
      {
        "attributes": {
          "SourceUnit": 254,
          "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/Moonwalkerswap-v2-periphery/contracts/interfaces/IERC20.sol",
          "file": "./interfaces/IERC20.sol",
          "scope": 170,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 7,
        "name": "ImportDirective",
        "src": "317:33:0"
      },
      {
        "attributes": {
          "abstract": false,
          "contractDependencies": [
            269
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            169,
            269
          ],
          "name": "MoonwalkerswapV2Migrator",
          "scope": 170
        },
        "children": [
          {
            "attributes": {
              "arguments": null
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "IMoonwalkerswapV2Migrator",
                  "referencedDeclaration": 269,
                  "type": "contract IMoonwalkerswapV2Migrator"
                },
                "id": 8,
                "name": "UserDefinedTypeName",
                "src": "389:25:0"
              }
            ],
            "id": 9,
            "name": "InheritanceSpecifier",
            "src": "389:25:0"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "immutable",
              "name": "factoryV1",
              "overrides": null,
              "scope": 169,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "contract IMoonwalkerswapV1Factory",
              "value": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "IMoonwalkerswapV1Factory",
                  "referencedDeclaration": 643,
                  "type": "contract IMoonwalkerswapV1Factory"
                },
                "id": 10,
                "name": "UserDefinedTypeName",
                "src": "421:24:0"
              }
            ],
            "id": 11,
            "name": "VariableDeclaration",
            "src": "421:44:0"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "immutable",
              "name": "router",
              "overrides": null,
              "scope": 169,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "contract IMoonwalkerswapV2Router01",
              "value": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "IMoonwalkerswapV2Router01",
                  "referencedDeclaration": 577,
                  "type": "contract IMoonwalkerswapV2Router01"
                },
                "id": 12,
                "name": "UserDefinedTypeName",
                "src": "471:25:0"
              }
            ],
            "id": 13,
            "name": "VariableDeclaration",
            "src": "471:42:0"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": true,
              "kind": "constructor",
              "modifiers": [
                null
              ],
              "name": "",
              "overrides": null,
              "scope": 169,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_factoryV1",
                      "overrides": null,
                      "scope": 33,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 14,
                        "name": "ElementaryTypeName",
                        "src": "532:7:0"
                      }
                    ],
                    "id": 15,
                    "name": "VariableDeclaration",
                    "src": "532:18:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_router",
                      "overrides": null,
                      "scope": 33,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 16,
                        "name": "ElementaryTypeName",
                        "src": "552:7:0"
                      }
                    ],
                    "id": 17,
                    "name": "VariableDeclaration",
                    "src": "552:15:0"
                  }
                ],
                "id": 18,
                "name": "ParameterList",
                "src": "531:37:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 19,
                "name": "ParameterList",
                "src": "576:0:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract IMoonwalkerswapV1Factory"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11,
                              "type": "contract IMoonwalkerswapV1Factory",
                              "value": "factoryV1"
                            },
                            "id": 20,
                            "name": "Identifier",
                            "src": "586:9:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "contract IMoonwalkerswapV1Factory",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 643,
                                  "type": "type(contract IMoonwalkerswapV1Factory)",
                                  "value": "IMoonwalkerswapV1Factory"
                                },
                                "id": 21,
                                "name": "Identifier",
                                "src": "598:24:0"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 15,
                                  "type": "address",
                                  "value": "_factoryV1"
                                },
                                "id": 22,
                                "name": "Identifier",
                                "src": "623:10:0"
                              }
                            ],
                            "id": 23,
                            "name": "FunctionCall",
                            "src": "598:36:0"
                          }
                        ],
                        "id": 24,
                        "name": "Assignment",
                        "src": "586:48:0"
                      }
                    ],
                    "id": 25,
                    "name": "ExpressionStatement",
                    "src": "586:48:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract IMoonwalkerswapV2Router01"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 13,
                              "type": "contract IMoonwalkerswapV2Router01",
                              "value": "router"
                            },
                            "id": 26,
                            "name": "Identifier",
                            "src": "644:6:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "contract IMoonwalkerswapV2Router01",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 577,
                                  "type": "type(contract IMoonwalkerswapV2Router01)",
                                  "value": "IMoonwalkerswapV2Router01"
                                },
                                "id": 27,
                                "name": "Identifier",
                                "src": "653:25:0"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 17,
                                  "type": "address",
                                  "value": "_router"
                                },
                                "id": 28,
                                "name": "Identifier",
                                "src": "679:7:0"
                              }
                            ],
                            "id": 29,
                            "name": "FunctionCall",
                            "src": "653:34:0"
                          }
                        ],
                        "id": 30,
                        "name": "Assignment",
                        "src": "644:43:0"
                      }
                    ],
                    "id": 31,
                    "name": "ExpressionStatement",
                    "src": "644:43:0"
                  }
                ],
                "id": 32,
                "name": "Block",
                "src": "576:118:0"
              }
            ],
            "id": 33,
            "name": "FunctionDefinition",
            "src": "520:174:0"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "receive",
              "modifiers": [
                null
              ],
              "name": "",
              "overrides": null,
              "scope": 169,
              "stateMutability": "payable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 34,
                "name": "ParameterList",
                "src": "707:2:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 35,
                "name": "ParameterList",
                "src": "727:0:0"
              },
              {
                "attributes": {
                  "statements": [
                    null
                  ]
                },
                "children": [],
                "id": 36,
                "name": "Block",
                "src": "727:2:0"
              }
            ],
            "id": 37,
            "name": "FunctionDefinition",
            "src": "700:29:0"
          },
          {
            "attributes": {
              "baseFunctions": [
                268
              ],
              "documentation": null,
              "functionSelector": "b7df1d25",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "migrate",
              "scope": 169,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 49,
                "name": "OverrideSpecifier",
                "src": "859:8:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "token",
                      "overrides": null,
                      "scope": 168,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 38,
                        "name": "ElementaryTypeName",
                        "src": "752:7:0"
                      }
                    ],
                    "id": 39,
                    "name": "VariableDeclaration",
                    "src": "752:13:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amountTokenMin",
                      "overrides": null,
                      "scope": 168,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 40,
                        "name": "ElementaryTypeName",
                        "src": "767:4:0"
                      }
                    ],
                    "id": 41,
                    "name": "VariableDeclaration",
                    "src": "767:19:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amountETHMin",
                      "overrides": null,
                      "scope": 168,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 42,
                        "name": "ElementaryTypeName",
                        "src": "788:4:0"
                      }
                    ],
                    "id": 43,
                    "name": "VariableDeclaration",
                    "src": "788:17:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "to",
                      "overrides": null,
                      "scope": 168,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 44,
                        "name": "ElementaryTypeName",
                        "src": "807:7:0"
                      }
                    ],
                    "id": 45,
                    "name": "VariableDeclaration",
                    "src": "807:10:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "deadline",
                      "overrides": null,
                      "scope": 168,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 46,
                        "name": "ElementaryTypeName",
                        "src": "819:4:0"
                      }
                    ],
                    "id": 47,
                    "name": "VariableDeclaration",
                    "src": "819:13:0"
                  }
                ],
                "id": 48,
                "name": "ParameterList",
                "src": "751:82:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 50,
                "name": "ParameterList",
                "src": "872:0:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        52
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "exchangeV1",
                          "overrides": null,
                          "scope": 167,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract IMoonwalkerswapV1Exchange",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "IMoonwalkerswapV1Exchange",
                              "referencedDeclaration": 633,
                              "type": "contract IMoonwalkerswapV1Exchange"
                            },
                            "id": 51,
                            "name": "UserDefinedTypeName",
                            "src": "882:25:0"
                          }
                        ],
                        "id": 52,
                        "name": "VariableDeclaration",
                        "src": "882:36:0"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "contract IMoonwalkerswapV1Exchange",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 633,
                              "type": "type(contract IMoonwalkerswapV1Exchange)",
                              "value": "IMoonwalkerswapV1Exchange"
                            },
                            "id": 53,
                            "name": "Identifier",
                            "src": "921:25:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "getExchange",
                                  "referencedDeclaration": 642,
                                  "type": "function (address) view external returns (address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11,
                                      "type": "contract IMoonwalkerswapV1Factory",
                                      "value": "factoryV1"
                                    },
                                    "id": 54,
                                    "name": "Identifier",
                                    "src": "947:9:0"
                                  }
                                ],
                                "id": 55,
                                "name": "MemberAccess",
                                "src": "947:21:0"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 39,
                                  "type": "address",
                                  "value": "token"
                                },
                                "id": 56,
                                "name": "Identifier",
                                "src": "969:5:0"
                              }
                            ],
                            "id": 57,
                            "name": "FunctionCall",
                            "src": "947:28:0"
                          }
                        ],
                        "id": 58,
                        "name": "FunctionCall",
                        "src": "921:55:0"
                      }
                    ],
                    "id": 59,
                    "name": "VariableDeclarationStatement",
                    "src": "882:94:0"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        61
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "liquidityV1",
                          "overrides": null,
                          "scope": 167,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 60,
                            "name": "ElementaryTypeName",
                            "src": "986:4:0"
                          }
                        ],
                        "id": 61,
                        "name": "VariableDeclaration",
                        "src": "986:16:0"
                      },
                      {
                        "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": 586,
                              "type": "function (address) view external returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 52,
                                  "type": "contract IMoonwalkerswapV1Exchange",
                                  "value": "exchangeV1"
                                },
                                "id": 62,
                                "name": "Identifier",
                                "src": "1005:10:0"
                              }
                            ],
                            "id": 63,
                            "name": "MemberAccess",
                            "src": "1005:20:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": -15,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 64,
                                "name": "Identifier",
                                "src": "1026:3:0"
                              }
                            ],
                            "id": 65,
                            "name": "MemberAccess",
                            "src": "1026:10:0"
                          }
                        ],
                        "id": 66,
                        "name": "FunctionCall",
                        "src": "1005:32:0"
                      }
                    ],
                    "id": 67,
                    "name": "VariableDeclarationStatement",
                    "src": "986:51:0"
                  },
                  {
                    "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_77631768048ee92f9dcf4b9b9d762877d6b9723214862c733f0596708fc219b7",
                                  "typeString": "literal_string \"TRANSFER_FROM_FAILED\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 68,
                            "name": "Identifier",
                            "src": "1047:7:0"
                          },
                          {
                            "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_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "transferFrom",
                                  "referencedDeclaration": 597,
                                  "type": "function (address,address,uint256) external returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 52,
                                      "type": "contract IMoonwalkerswapV1Exchange",
                                      "value": "exchangeV1"
                                    },
                                    "id": 69,
                                    "name": "Identifier",
                                    "src": "1055:10:0"
                                  }
                                ],
                                "id": 70,
                                "name": "MemberAccess",
                                "src": "1055:23:0"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sender",
                                  "referencedDeclaration": null,
                                  "type": "address payable"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": -15,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 71,
                                    "name": "Identifier",
                                    "src": "1079:3:0"
                                  }
                                ],
                                "id": 72,
                                "name": "MemberAccess",
                                "src": "1079:10:0"
                              },
                              {
                                "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$_MoonwalkerswapV2Migrator_$169",
                                          "typeString": "contract MoonwalkerswapV2Migrator"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "address",
                                          "type": null
                                        },
                                        "id": 73,
                                        "name": "ElementaryTypeName",
                                        "src": "1091:7:0"
                                      }
                                    ],
                                    "id": 74,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "1091:7:0"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": -28,
                                      "type": "contract MoonwalkerswapV2Migrator",
                                      "value": "this"
                                    },
                                    "id": 75,
                                    "name": "Identifier",
                                    "src": "1099:4:0"
                                  }
                                ],
                                "id": 76,
                                "name": "FunctionCall",
                                "src": "1091:13:0"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 61,
                                  "type": "uint256",
                                  "value": "liquidityV1"
                                },
                                "id": 77,
                                "name": "Identifier",
                                "src": "1106:11:0"
                              }
                            ],
                            "id": 78,
                            "name": "FunctionCall",
                            "src": "1055:63:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "5452414e534645525f46524f4d5f4641494c4544",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"TRANSFER_FROM_FAILED\"",
                              "value": "TRANSFER_FROM_FAILED"
                            },
                            "id": 79,
                            "name": "Literal",
                            "src": "1120:22:0"
                          }
                        ],
                        "id": 80,
                        "name": "FunctionCall",
                        "src": "1047:96:0"
                      }
                    ],
                    "id": 81,
                    "name": "ExpressionStatement",
                    "src": "1047:96:0"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        83,
                        85
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "amountETHV1",
                          "overrides": null,
                          "scope": 167,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 82,
                            "name": "ElementaryTypeName",
                            "src": "1154:4:0"
                          }
                        ],
                        "id": 83,
                        "name": "VariableDeclaration",
                        "src": "1154:16:0"
                      },
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "amountTokenV1",
                          "overrides": null,
                          "scope": 167,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 84,
                            "name": "ElementaryTypeName",
                            "src": "1172:4:0"
                          }
                        ],
                        "id": 85,
                        "name": "VariableDeclaration",
                        "src": "1172:18:0"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple(uint256,uint256)",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "removeLiquidity",
                              "referencedDeclaration": 612,
                              "type": "function (uint256,uint256,uint256,uint256) external returns (uint256,uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 52,
                                  "type": "contract IMoonwalkerswapV1Exchange",
                                  "value": "exchangeV1"
                                },
                                "id": 86,
                                "name": "Identifier",
                                "src": "1194:10:0"
                              }
                            ],
                            "id": 87,
                            "name": "MemberAccess",
                            "src": "1194:26:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 61,
                              "type": "uint256",
                              "value": "liquidityV1"
                            },
                            "id": 88,
                            "name": "Identifier",
                            "src": "1221:11:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "31",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 1",
                              "value": "1"
                            },
                            "id": 89,
                            "name": "Literal",
                            "src": "1234:1:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "31",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 1",
                              "value": "1"
                            },
                            "id": 90,
                            "name": "Literal",
                            "src": "1237:1:0"
                          },
                          {
                            "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_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint",
                                      "type": null
                                    },
                                    "id": 91,
                                    "name": "ElementaryTypeName",
                                    "src": "1240:4:0"
                                  }
                                ],
                                "id": 92,
                                "name": "ElementaryTypeNameExpression",
                                "src": "1240:4:0"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "operator": "-",
                                  "prefix": true,
                                  "type": "int_const -1"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "31",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 1",
                                      "value": "1"
                                    },
                                    "id": 93,
                                    "name": "Literal",
                                    "src": "1246:1:0"
                                  }
                                ],
                                "id": 94,
                                "name": "UnaryOperation",
                                "src": "1245:2:0"
                              }
                            ],
                            "id": 95,
                            "name": "FunctionCall",
                            "src": "1240:8:0"
                          }
                        ],
                        "id": 96,
                        "name": "FunctionCall",
                        "src": "1194:55:0"
                      }
                    ],
                    "id": 97,
                    "name": "VariableDeclarationStatement",
                    "src": "1153:96:0"
                  },
                  {
                    "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_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "safeApprove",
                              "referencedDeclaration": 688,
                              "type": "function (address,address,uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 803,
                                  "type": "type(library TransferHelper)",
                                  "value": "TransferHelper"
                                },
                                "id": 98,
                                "name": "Identifier",
                                "src": "1259:14:0"
                              }
                            ],
                            "id": 100,
                            "name": "MemberAccess",
                            "src": "1259:26:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 39,
                              "type": "address",
                              "value": "token"
                            },
                            "id": 101,
                            "name": "Identifier",
                            "src": "1286:5:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IMoonwalkerswapV2Router01_$577",
                                      "typeString": "contract IMoonwalkerswapV2Router01"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address",
                                      "type": null
                                    },
                                    "id": 102,
                                    "name": "ElementaryTypeName",
                                    "src": "1293:7:0"
                                  }
                                ],
                                "id": 103,
                                "name": "ElementaryTypeNameExpression",
                                "src": "1293:7:0"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 13,
                                  "type": "contract IMoonwalkerswapV2Router01",
                                  "value": "router"
                                },
                                "id": 104,
                                "name": "Identifier",
                                "src": "1301:6:0"
                              }
                            ],
                            "id": 105,
                            "name": "FunctionCall",
                            "src": "1293:15:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 85,
                              "type": "uint256",
                              "value": "amountTokenV1"
                            },
                            "id": 106,
                            "name": "Identifier",
                            "src": "1310:13:0"
                          }
                        ],
                        "id": 107,
                        "name": "FunctionCall",
                        "src": "1259:65:0"
                      }
                    ],
                    "id": 108,
                    "name": "ExpressionStatement",
                    "src": "1259:65:0"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        110,
                        112,
                        null
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "amountTokenV2",
                          "overrides": null,
                          "scope": 167,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 109,
                            "name": "ElementaryTypeName",
                            "src": "1335:4:0"
                          }
                        ],
                        "id": 110,
                        "name": "VariableDeclaration",
                        "src": "1335:18:0"
                      },
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "amountETHV2",
                          "overrides": null,
                          "scope": 167,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 111,
                            "name": "ElementaryTypeName",
                            "src": "1355:4:0"
                          }
                        ],
                        "id": 112,
                        "name": "VariableDeclaration",
                        "src": "1355:16:0"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple(uint256,uint256,uint256)",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "names": [
                                "value"
                              ],
                              "type": "function (address,uint256,uint256,uint256,address,uint256) payable external returns (uint256,uint256,uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "addLiquidityETH",
                                  "referencedDeclaration": 327,
                                  "type": "function (address,uint256,uint256,uint256,address,uint256) payable external returns (uint256,uint256,uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 13,
                                      "type": "contract IMoonwalkerswapV2Router01",
                                      "value": "router"
                                    },
                                    "id": 113,
                                    "name": "Identifier",
                                    "src": "1376:6:0"
                                  }
                                ],
                                "id": 114,
                                "name": "MemberAccess",
                                "src": "1376:22:0"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 83,
                                  "type": "uint256",
                                  "value": "amountETHV1"
                                },
                                "id": 115,
                                "name": "Identifier",
                                "src": "1406:11:0"
                              }
                            ],
                            "id": 116,
                            "name": "FunctionCallOptions",
                            "src": "1376:42:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 39,
                              "type": "address",
                              "value": "token"
                            },
                            "id": 117,
                            "name": "Identifier",
                            "src": "1432:5:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 85,
                              "type": "uint256",
                              "value": "amountTokenV1"
                            },
                            "id": 118,
                            "name": "Identifier",
                            "src": "1451:13:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 41,
                              "type": "uint256",
                              "value": "amountTokenMin"
                            },
                            "id": 119,
                            "name": "Identifier",
                            "src": "1478:14:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 43,
                              "type": "uint256",
                              "value": "amountETHMin"
                            },
                            "id": 120,
                            "name": "Identifier",
                            "src": "1506:12:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 45,
                              "type": "address",
                              "value": "to"
                            },
                            "id": 121,
                            "name": "Identifier",
                            "src": "1532:2:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 47,
                              "type": "uint256",
                              "value": "deadline"
                            },
                            "id": 122,
                            "name": "Identifier",
                            "src": "1548:8:0"
                          }
                        ],
                        "id": 123,
                        "name": "FunctionCall",
                        "src": "1376:190:0"
                      }
                    ],
                    "id": 124,
                    "name": "VariableDeclarationStatement",
                    "src": "1334:232:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 85,
                              "type": "uint256",
                              "value": "amountTokenV1"
                            },
                            "id": 125,
                            "name": "Identifier",
                            "src": "1580:13:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 110,
                              "type": "uint256",
                              "value": "amountTokenV2"
                            },
                            "id": 126,
                            "name": "Identifier",
                            "src": "1596:13:0"
                          }
                        ],
                        "id": 127,
                        "name": "BinaryOperation",
                        "src": "1580:29:0"
                      },
                      {
                        "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_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "safeApprove",
                                      "referencedDeclaration": 688,
                                      "type": "function (address,address,uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 803,
                                          "type": "type(library TransferHelper)",
                                          "value": "TransferHelper"
                                        },
                                        "id": 128,
                                        "name": "Identifier",
                                        "src": "1625:14:0"
                                      }
                                    ],
                                    "id": 130,
                                    "name": "MemberAccess",
                                    "src": "1625:26:0"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 39,
                                      "type": "address",
                                      "value": "token"
                                    },
                                    "id": 131,
                                    "name": "Identifier",
                                    "src": "1652:5:0"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "address",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_IMoonwalkerswapV2Router01_$577",
                                              "typeString": "contract IMoonwalkerswapV2Router01"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(address)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "address",
                                              "type": null
                                            },
                                            "id": 132,
                                            "name": "ElementaryTypeName",
                                            "src": "1659:7:0"
                                          }
                                        ],
                                        "id": 133,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "1659:7:0"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 13,
                                          "type": "contract IMoonwalkerswapV2Router01",
                                          "value": "router"
                                        },
                                        "id": 134,
                                        "name": "Identifier",
                                        "src": "1667:6:0"
                                      }
                                    ],
                                    "id": 135,
                                    "name": "FunctionCall",
                                    "src": "1659:15:0"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 136,
                                    "name": "Literal",
                                    "src": "1676:1:0"
                                  }
                                ],
                                "id": 137,
                                "name": "FunctionCall",
                                "src": "1625:53:0"
                              }
                            ],
                            "id": 138,
                            "name": "ExpressionStatement",
                            "src": "1625:53:0"
                          },
                          {
                            "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_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "safeTransfer",
                                      "referencedDeclaration": 731,
                                      "type": "function (address,address,uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 803,
                                          "type": "type(library TransferHelper)",
                                          "value": "TransferHelper"
                                        },
                                        "id": 139,
                                        "name": "Identifier",
                                        "src": "1746:14:0"
                                      }
                                    ],
                                    "id": 141,
                                    "name": "MemberAccess",
                                    "src": "1746:27:0"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 39,
                                      "type": "address",
                                      "value": "token"
                                    },
                                    "id": 142,
                                    "name": "Identifier",
                                    "src": "1774:5:0"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "sender",
                                      "referencedDeclaration": null,
                                      "type": "address payable"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": -15,
                                          "type": "msg",
                                          "value": "msg"
                                        },
                                        "id": 143,
                                        "name": "Identifier",
                                        "src": "1781:3:0"
                                      }
                                    ],
                                    "id": 144,
                                    "name": "MemberAccess",
                                    "src": "1781:10:0"
                                  },
                                  {
                                    "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": 85,
                                          "type": "uint256",
                                          "value": "amountTokenV1"
                                        },
                                        "id": 145,
                                        "name": "Identifier",
                                        "src": "1793:13:0"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 110,
                                          "type": "uint256",
                                          "value": "amountTokenV2"
                                        },
                                        "id": 146,
                                        "name": "Identifier",
                                        "src": "1809:13:0"
                                      }
                                    ],
                                    "id": 147,
                                    "name": "BinaryOperation",
                                    "src": "1793:29:0"
                                  }
                                ],
                                "id": 148,
                                "name": "FunctionCall",
                                "src": "1746:77:0"
                              }
                            ],
                            "id": 149,
                            "name": "ExpressionStatement",
                            "src": "1746:77:0"
                          }
                        ],
                        "id": 150,
                        "name": "Block",
                        "src": "1611:223:0"
                      },
                      {
                        "attributes": {
                          "falseBody": null
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 83,
                                  "type": "uint256",
                                  "value": "amountETHV1"
                                },
                                "id": 151,
                                "name": "Identifier",
                                "src": "1844:11:0"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 112,
                                  "type": "uint256",
                                  "value": "amountETHV2"
                                },
                                "id": 152,
                                "name": "Identifier",
                                "src": "1858:11:0"
                              }
                            ],
                            "id": 153,
                            "name": "BinaryOperation",
                            "src": "1844:25:0"
                          },
                          {
                            "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_address_payable",
                                              "typeString": "address payable"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "safeTransferETH",
                                          "referencedDeclaration": 802,
                                          "type": "function (address,uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 803,
                                              "type": "type(library TransferHelper)",
                                              "value": "TransferHelper"
                                            },
                                            "id": 154,
                                            "name": "Identifier",
                                            "src": "2006:14:0"
                                          }
                                        ],
                                        "id": 156,
                                        "name": "MemberAccess",
                                        "src": "2006:30:0"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "sender",
                                          "referencedDeclaration": null,
                                          "type": "address payable"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": -15,
                                              "type": "msg",
                                              "value": "msg"
                                            },
                                            "id": 157,
                                            "name": "Identifier",
                                            "src": "2037:3:0"
                                          }
                                        ],
                                        "id": 158,
                                        "name": "MemberAccess",
                                        "src": "2037:10:0"
                                      },
                                      {
                                        "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": 83,
                                              "type": "uint256",
                                              "value": "amountETHV1"
                                            },
                                            "id": 159,
                                            "name": "Identifier",
                                            "src": "2049:11:0"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 112,
                                              "type": "uint256",
                                              "value": "amountETHV2"
                                            },
                                            "id": 160,
                                            "name": "Identifier",
                                            "src": "2063:11:0"
                                          }
                                        ],
                                        "id": 161,
                                        "name": "BinaryOperation",
                                        "src": "2049:25:0"
                                      }
                                    ],
                                    "id": 162,
                                    "name": "FunctionCall",
                                    "src": "2006:69:0"
                                  }
                                ],
                                "id": 163,
                                "name": "ExpressionStatement",
                                "src": "2006:69:0"
                              }
                            ],
                            "id": 164,
                            "name": "Block",
                            "src": "1871:215:0"
                          }
                        ],
                        "id": 165,
                        "name": "IfStatement",
                        "src": "1840:246:0"
                      }
                    ],
                    "id": 166,
                    "name": "IfStatement",
                    "src": "1576:510:0"
                  }
                ],
                "id": 167,
                "name": "Block",
                "src": "872:1220:0"
              }
            ],
            "id": 168,
            "name": "FunctionDefinition",
            "src": "735:1357:0"
          }
        ],
        "id": 169,
        "name": "ContractDefinition",
        "src": "352:1742:0"
      }
    ],
    "id": 170,
    "name": "SourceUnit",
    "src": "0:2095:0"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.6+commit.6c089d02.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.1",
  "updatedAt": "2022-01-19T06:42:58.957Z",
  "devdoc": {
    "methods": {}
  },
  "userdoc": {
    "methods": {}
  }
}